Puncte:0

Utilizați ajax pentru a salva formularul modal / de dialog în loc de reîncărcare a paginii

drapel kr

Caut o modalitate de a salva formularele modale și de dialog prin ajax în loc să redirecționez utilizatorul după trimiterea formularului. Ajax este un teritoriu destul de necunoscut pentru mine.

Am găsit deja câteva subiecte interesante aici:

Încercarea de dialog jQuery UI de a trimite un formular folosind AJAX mă redirecționează către pagina de formular reală în loc să trimită AJAX

Cum se închide modal după trimiterea formularului?

Am încercat toate răspunsurile afișate acolo, dar fără noroc. Folosesc Drupal 9 și se pare că codul poate fi ușor diferit între versiunile 8 și 9. Am încercat să caut în paginile de documentație de pe drupal.org, dar nu găsesc nimic util pentru cazul meu.

Puncte:0
drapel kr

Pentru oricine îi pasă, l-am făcut să funcționeze cu următorul cod în modulul meu personalizat „cs_modals”:

 /**
 * Implementează hook_form_alter().
 */
funcția cs_modals_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
    $cerere = \Drupal::cerere();
    // Verificați dacă solicitarea Ajax.
    dacă ($request->isXmlHttpRequest()) {
      $form['actions']['submit']['#ajax']['callback'] = '_cs_modals_id_submit_ajax_callback';
    }
}

/**
 * Apel invers Ajax personalizat.
 */
funcția _cs_modals_id_submit_ajax_callback(matrice &$form, FormStateInterface $form_state) {
  // Dacă formularul este valid, închideți dialogul.
  dacă (!$form_state->hasAnyErrors()) {
    $răspuns = nou \Drupal\Core\Ajax\AjaxResponse();
    $response->addCommand(new \Drupal\Core\Ajax\CloseDialogCommand());
    returnează $răspuns;
  }
  // În caz contrar, apelați apelul implicit #ajax.
  $form_object = $form_state->getFormObject();
  $răspuns = $form_object->submitAjaxForm($form, $form_state) ;
  returnează $răspuns;
}

Acum, fiecare formular într-un mod este trimis prin Ajax. Acum caut o modalitate de a închide automat modulul atunci când formularul este trimis cu succes sau de a afișa un mesaj de eroare prin Ajax când unul sau mai multe câmpuri obligatorii nu au nicio valoare. Orice ajutor în acest sens ar fi apreciat!

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.