Рейтинг:2

Проблема с добавлением одной и той же веб-формы несколько раз на страницу

флаг th

Проблема

У меня есть узел статьи с включенным компоновщиком макета для автора контента.

у меня есть веб-форма Подписаться на рассылку с включенным 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.

sonfd avatar
флаг in
Я голосую за то, чтобы закрыть этот вопрос, потому что он должен быть решен в [очереди вопросов модуля веб-формы] (https://www.drupal.org/project/issues/webform?categories=All) на drupal.org.
sonfd avatar
флаг in
Обходной путь может заключаться в перенастройке веб-формы, чтобы изменить способ отображения подтверждающего сообщения.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.