Puncte:0

Cum să salvați o valoare ajaxificată într-un formular

drapel gb

Adaug un apel invers ajax la un câmp selectat

$form['field_equipe_membre']['widget']['#ajax'] = array(
'callback' => 'ajax_desactive_unites_field_callback',
'eveniment' => 'schimbare',
'method' => 'html',
'wrapper' => 'edit-field-unite-de-recherche-wrapper',
);

Din câmpul triggering_element, am reușit să recuperez o valoare printr-o solicitare db și să o selectez într-un alt câmp de selectare

$trigger = $form_state->getTriggeringElement();
$selected_equipe = $trigger['#value'];
 
$interogare....

$răspuns = AjaxResponse nou();
$content = '<option value=\"'.$row_unite['nid'].'\" selected=\"selected\">'.$row_unite['title'].'</option>';
$response->addCommand( new AppendCommand('#edit-field-unite-de-recherche', $content));
returnează $răspuns;

Dar când trimit formularul, valoarea aleasă de apel invers nu este salvată.

Care sunt liniile magice sau metoda potrivită pentru a face acest lucru?

am testat

$form_state->setRebuild();

în apel invers; am testat si eu

$form_state->setValue('field_unite_de_recherche', $row_unite['nid']);
$form_state->setCached(TRUE);

Am testat soluția propusă undeva în acest forum pentru a defini un câmp ascuns în hook_form_edit_alter

$form['product_id']['#type']='ascuns';
$form['product_id']['#prefix']='<div id="liberte_pid">';
$form['product_id']['#sufix']='</div>';

și salvați valoarea în apel invers

$form['product_id']['#value'] = array(
  $row_unite['nid'],
);

Dar niciuna dintre aceste soluții nu mi-a dat soluția.

Am și roșu https://www.drupal.org/project/drupal/issues/2263569 pagina, dar nu stiu ce sa fac.

Deci: cum să salvezi această valoare aleasă printr-un apel invers ajax?

Jaypan avatar
drapel de
În Drupal, nu puteți adăuga elemente de formular într-un apel invers Ajax - acestea vor fi ignorate de sistem. Acestea trebuie adăugate în definiția formularului, care este memorată în cache ÎNAINTE de apel invers Ajax. Vedeți acest tutorial zilele trecute care arată un exemplu despre cum să faceți acest lucru: https://www.jaypan.com/tutorial/drupal-form-api-ajax-form-and-results-same-page
cocq avatar
drapel gb
În cazul meu, nu am adăugat elemente de formular în apelul meu ajax, selectez valoarea corectă într-un element de formular existent dintr-o solicitare db, ea însăși dintr-o cerere de utilizator. Am roșu cu atenție link-ul tău (și am încercat să-mi adaptez codul de la el), dar este codificat dintr-o programare construită din formular. În cazul meu, este o construcție interactivă a formularului. Deci, în exemplul dvs., nu pot gestiona "return $form['search_results'];" în funcția „ajaxSubmit”. De fapt, bănuiesc că managementul ajax se poate face doar dintr-o clădire de programare a unui formular. Voi testa asta mai târziu. Deci, multumesc pentru link.
Jaypan avatar
drapel de
Văd că adaugi un `` etichetați în callback-ul ajax, astfel încât adăugați elemente în callback-ul ajax. Nu puteți adăuga nimic la apel invers ajax, formularul este deja în cache în acel moment.
cocq avatar
drapel gb
Ne pare rău, dar nu am adăugat o valoare, este o selecție a valorii corecte din lista de selectare. Dar având în vedere că „formularul este deja în cache în acel moment”, este normal ca actualizarea elementului selectat să fie inutilă!

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.