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.