Puncte:0

Actualizați câmpul corpului de la apel invers ajax

drapel cn

Trebuie să actualizez câmpul comun „corp” când modific valoarea unor câmpuri de paragraf.

Iată hook_form_alter-ul meu:

$form["body"]["#prefix"] = "<div id='body__update_real_time_seo'>";
$form["body"]["#suffix"] = "</div>";

$form["field_content_edito"]["widget"][3]["subform"]["field_paragraph_subtitle"]["widget"][0]["value"]["#ajax"] = [
    "callback" => "_update_real_time_seo",
    "eveniment" => "schimbare",
    "wrapper" => "body__update_real_time_seo",
    "method" => "înlocuiește",
];

Și apel invers personalizat:

funcția _update_real_time_seo(&$form, FormStateInterface $form_state) {
    $form["body"]["widget"][0]["#default_value"] = "ok";
    returnează $form["corp"];
}

Când îmi schimb câmpul paragraf, am primit „Vă rugăm să așteptați...” dar nu se întâmplă nimic, încă văd vechea mea valoare „ok”. Blocat pe această problemă de câteva ore cu mai multe încercări de corecție de la stackoverflow.

PS: Când dump înainte de „întoarcere”, îmi văd noua valoare „ok”.

Sper că cineva mă poate ajuta. Mulțumesc anticipat.

No Sssweat avatar
drapel ua
Încercați cu `#value`.
drapel cn
@NoSssweat Afișează în continuare valoarea veche după reîmprospătare.
No Sssweat avatar
drapel ua
După rularea ajax, există erori JS în consola browserului?
No Sssweat avatar
drapel ua
În scopuri de depanare, dacă încercați să schimbați valoarea corpului fără ajax, funcționează?
drapel cn
@NoSssweat nimic în consolă. Și da, dacă schimb valoarea corpului, apoi salvez, pot vedea noua valoare după reîncărcare.
berliner avatar
drapel bd
@guish Nu sunt sigur dacă aceasta este problema dvs., dar modelul general pentru AJAX cu Form API este să (1) Construiți totul în metoda de construire a formularului (modificarea formularului în cazul dvs.), (2) utilizați funcția de apel invers AJAX numai pentru a reveni partea specifică a formularului care trebuie înlocuită cu ajutorul selectorului de ambalaj. Asta și `#value` în loc de `#default_value` au funcționat pentru mine. Alternativ, puteți declanșa și un AjaxResponse (consultați https://www.drupal.org/docs/drupal-apis/javascript-api/ajax-forms#s-example-dynamic-textfield). Câmpul corporal care este potențial condus de CKEditor ar putea complica și mai mult lucrurile.

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.