Puncte:0

salvați o selecție dintr-un câmp ajaxificat

drapel gb

Am actualizat cu succes un câmp din ajax. Declarația sa este următoarea:

$form['field_unite_de_recherche']['widget']['#ajax'] = array(
  'callback' => 'ajax_equipes_from_unites_callback',
  'eveniment' => 'schimbare',
  'method' => 'html',
  'wrapper' => 'edit-field-equipe-membre2-wrapper',
);

Acest câmp ajaxificat este declarat după cum urmează:

$form['field_equipe_membre2'] = [
  '#type' => 'selectați',
  '#title' => 'Echipament(e) membru(e) atașat(e) Ã '.$title,
  '#options' => $opțiuni,
];

Întrebarea mea este: cum să cunoașteți și să salvați valoarea selectată în acest câmp ajaxificat de către utilizator?

Am încercat să adaug o altă declarație ajax în acest câmp ajaxificat, după cum urmează:

$form['field_equipe_membre2'] = [
  '#type' => 'selectați',
  '#title' => 'Echipament(e) membru(e) atașat(e) Ã '.$title,
  '#options' => $opțiuni,
  '#ajax' => matrice(
    'callback' => 'ajax_save_choice_callback',
    'eveniment' => 'schimbare',
    'method' => 'html',
    'wrapper' => 'edit-field-equipe-membre2-wrapper',
  )
];

Dar funcția de apel invers nu este declanșată. Există o limitare a funcției ajax într-o formă?

Am roșu de câteva ori că pot folosi $form_sate, de exemplu, ca în cele ce urmează (de la Apelul Ajax cu Trimitere pierde datele din formularul trimis)

$valoare = $form_state->getValue('field_equipe_membre2');
$testArray = array('field_equipe_membre2' => $valoare);
$form_state->setStorage($testArray);

Dar apelul înapoi nu este declanșat.

Pot avea niște sfaturi?

Jaypan avatar
drapel de
De obicei, aceste probleme apar atunci când ați adăugat elemente de formular în apelarea ajax.Nu li se va aplica ajax. Trebuie să adăugați elemente de formular în definiția formularului.
cocq avatar
drapel gb
Poate nu am fost suficient de clar. „field_equipe_membre2” în definiția formularului, fără valori de opțiuni, iar aceste valori sunt bine completate de funcția „ajax_equipes_from_unites_callback”. Dar nu am găsit cum să recuperez valoarea selectată în câmpul „field_equipe_membre2” când utilizatorul a făcut clic pe butonul „Trimite” al formularului.
drapel in
În primul rând, nu cred că `setStorage()` este metoda pe care o doriți. Probabil că ar trebui să utilizați `setValue()`, în schimb. Cum redați acest formular? De asemenea, acesta este pentru Drupal 7, nu? Ar trebui să marcați întrebarea cu numărul versiunii Drupal.
cocq avatar
drapel gb
Aveți dreptate referitor la „setValue” ca o funcție mai bună decât „setStorage” (unul dintre numeroasele mele teste...). Acesta este pentru Drupal 9.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.