Drupal 8/9: webform/node в модальном окне

27 ноября 2018 в 9:29
Аватар пользователя ivnish ivnish 5 9

Задача: быстро сделать форму "заказать звонок" для сайта

Можно использовать контактную форму, но мне больше нравится webform

1) Создаем вебформу с нужными полями

2) Задаем ей алиас, например /call_me

3) Делаем ссылку вида

<a class="use-ajax" data-dialog-type="modal" href="/call_me">Обратный звонок</a>

4) Выбираем тип "подтверждения" у вебформы. Мне больше понравился вариант с редиректом на главную и выводом сообщения в регион сообщений.

Проверяем, работает. Всё? Нет, не всё. Работает для зарегистрированных пользователей, а для анонимов нет. Чтобы работало для анонимов

5) Добавляем в THEMENAME.libraries.yml

dependencies:
  - core/jquery.ui.dialog
  - core/drupal.dialog.ajax

6) Сбрасываем кэш

Теперь работает для всех.

Авторы: 

Комментарии

Кстати, clientside validation должен быть полезен, если вебформа аяксовая, т.к. на аясковых формах стандартная HTML5-валидация не работает, ибо события submit для формы не происходит.

28 ноября 2018 в 11:47

Есть вариант на мой взгляд более интересный и без необходимости в WebForm. Есть модуль от Никлана ContactTools. Дает возможность прикручивать раличный няшки к контактным формам )

1 декабря 2018 в 17:04

Не работает в хроме... просто переходит на страницу контактной формы.
включение всплывающих окон в настройках хрома не помогает

7 июля 2021 в 22:13

Урок от автора модуля Webform на тему их показа в модальном окне: https://youtu.be/zmRxyUHWczw

Я не знал, что такой функционал есть уже из коробки и начал решать эту задачу через модальные окна Bootstrap 5 - получается также не плохо. В шаблоне ноды настраиваю модальное окно согласно документации (https://getbootstrap.com/docs/5.0/components/modal/) и внутри окна вывожу поле, через которое привязываю нужную вебформу к ноде. В настройках формы включаю ajax

8 мая 2023 в 22:15