Puncte:2

Problemă cu același formular web adăugat de mai multe ori într-o pagină

drapel th

Problemă

Am un nod articol cu ​​generatorul de layout activat pentru autorul de conținut.

Am formular web Abonați-vă la newsletter cu ajax activat.

Adaug de două ori formularul web Abonare la newsletter la nod. Deci, există 2 aceleași formulare web adăugate la nod.

Când trimit al doilea formular, mesajul de confirmare apare în primul formular web.

Așteptat

Mesajul de confirmare ar trebui să apară în al doilea formular web.

Ce am încercat

Am încercat să schimb id-ul folosind

funcția MY_MODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) {
    dacă (isset($form['#webform_id'])) {
      $contor = _MY_MODULE_generate_webform_unique_id($form['#webform_id']);

      dacă ($contor !== 0) {
        $new_id = $form_id . '_' . $contor;
        $form['#form_id'] = $new_id;
        $form['#attributes']['id'] = $new_id;
        $form['#form_wrapper_id'] = $form['#form_wrapper_id'] . '--' . $contor;

        $content_wrapper = $form['#form_wrapper_id'] . '-conținut--' . $contor;
        $wrapper_id = $form['#form_wrapper_id'] . '--' . $contor;
        $prefix = '<span id="'. $content_wrapper .'"></span>' .
          „<div id="' . $wrapper_id . '" class="webform-ajax-form-wrapper" data-effect="fade" data-progress-type="throbber">';
        $form['#prefix'] = $prefix;
      }
    }
}


funcția _MY_MODULE_generate_webform_unique_id($webform_id) {
  $static_var = &drupal_static(__FUNCTION__ . ':' . $webform_id);
  dacă (!isset($static_var)) {
    // generează conținutul variabilei statice
    $static_var = 0;
  }
  else {
    $static_var += 1;
  }

  return $static_var;
}

Pot schimba ID-ul formularului, dar mesajul de confirmare se afișează în continuare în primul formular web.

Am văzut similare aici https://drupal.stackexchange.com/a/272176/26797 dar aceasta este pentru forma personalizată. Nu sunt sigur cum să o aplici cu formularul web.

Există vreo greșeală pe care am făcut-o sau altă abordare?

Mulțumesc anticipat.

Editați | ×

Pentru o soluție rapidă, în prezent modific toate formularele pentru a fi afișate în dialogul modal Drupal. Deci, în loc să apară formularul în pagină, am pus un link și utilizatorul face clic pe link pentru a deschide formularul. Nu sunt sigur dacă acesta este o eroare în formularul web sau codul meu personalizat încurcă lucrurile. Va trebui să încerc asta în Drupal de vanilie mai târziu.

sonfd avatar
drapel in
Votez închiderea acestei întrebări, deoarece ar trebui rezolvată în [coada de probleme a modulului de formular web](https://www.drupal.org/project/issues/webform?categories=All) de pe drupal.org.
sonfd avatar
drapel in
O soluție poate fi reconfigurarea formularului web pentru a verifica cum este afișat mesajul de confirmare.

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.