Проблема
У меня есть узел статьи с включенным компоновщиком макета для автора контента.
у меня есть веб-форма Подписаться на рассылку с включенным ajax.
Я дважды добавляю веб-форму «Подписаться на новостную рассылку» в узел. Таким образом, к узлу добавлены 2 одинаковые веб-формы.
Когда я отправляю вторую форму, в первой веб-форме появляется подтверждающее сообщение.
Ожидал
Подтверждающее сообщение должно появиться во второй веб-форме.
Что я пробовал
Я попытался изменить идентификатор с помощью
функция MY_MODULE_form_alter(&$form, FormStateInterface $form_state, $form_id) {
если (isset($form['#webform_id'])) {
$counter = _MY_MODULE_generate_webform_unique_id($form['#webform_id']);
если ($ счетчик !== 0) {
$new_id = $form_id . '_' . $счетчик;
$form['#form_id'] = $new_id;
$form['#attributes']['id'] = $new_id;
$form['#form_wrapper_id'] = $form['#form_wrapper_id'] . '--' . $счетчик;
$content_wrapper = $form['#form_wrapper_id']. '-содержание--' . $счетчик;
$wrapper_id = $form['#form_wrapper_id']. '--' . $счетчик;
$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;
}
}
}
функция _MY_MODULE_generate_webform_unique_id($webform_id) {
$static_var = &drupal_static(__FUNCTION__ . ':' . $webform_id);
если (!isset($static_var)) {
// генерируем содержимое статической переменной
$статическая_вар = 0;
}
еще {
$static_var += 1;
}
вернуть $static_var;
}
Я могу изменить идентификатор формы, но сообщение подтверждения все еще отображается в первой веб-форме.
Я видел подобное здесь https://drupal.stackexchange.com/a/272176/26797 но это для пользовательской формы. Не уверен, как применить его с веб-формой.
Есть ли какая-то ошибка, которую я сделал, или другой подход?
Заранее спасибо.
Редактировать
Для быстрого обходного пути я в настоящее время меняю всю форму для отображения в модальном диалоговом окне Drupal. Поэтому вместо того, чтобы форма отображалась на странице, я помещаю ссылку, и пользователь щелкает ссылку, чтобы открыть форму. Не уверен, что это ошибка в веб-форме или мой пользовательский код все портит. Позже мне нужно будет попробовать это в ванильном Drupal.