Внедряю форму обратного звонка на Drupal 8. Верстаю на Bootstrap 4.
Что нужно:
С любой страницы сайта по ссылке открылось модальное окно, человек написал, ему сообщение что заявка отправлена, человек окно закрыл. Вроде все как обычно у всех. Без всяких наворотов.
Подход:
1. Первый вариант. Сначала пробовал использовать решения из коробки: создал страницу, на ней разместил форму (модуль Webform). Сделал ссылку - class="use-ajax" data-dialog-type="dialog" (можно modal) мне не особо принципиально,data-dialog-options - здесь width:auto (что бы форма была адаптивной), classes: - здесь передал различные классы для сопоставления с Bootstrap. Настроил, подшаманил twig - получил форму как хотел. Дальше пошли пляски с бубном. Надо было на кнопке submit разместить icon font ameson. hook написал, сделал вместо input - button (что бы можно было добавить icon или image если надо). Со страницы отправки формы (без use-ajax и modal) все хорошо. И изображение на кнопке есть и отправляет и сообщение выдает об удачной отправке в модальном окне. Но как передать class для модального окна о статусе отправки???? Доступа к jqwery dialog ui уже нет. Даже в документации ничего не нашел. В добавок в модальном окне когда передаются параметры через data-dialog-options наверно заложено передача в input, но не в button как у меня задумано. Как не боролся с кнопкой через ajax из коробки - затея не удалась. Ну черт с ней с кнопкой. Но как темизировать окно с сообщением об отправке сообщения?????
Можно конечно пойти простым путем - в Webform задать страницу (например front) что бы после отправки человека перебросило на главную. И все дела. Но есть условие - человека должно вернуть (или он должен остаться на той странице на которой был).
1а. На каждой странице разместить блок с формой, сделать его скрытым, потом через modal Bootstrap его показать. Но это плохо. Форма будет грузиться на каждой странице - это трафик, а еще хуже открытая форма для ботов. Плохо для поисковиков - одинаковый, повторяющийся контент на куча страниц.
2. Второй вариант. На странице с формой темизировал все class modal Bootstrap. Сделал скрипт js, указал что бы он грузился при обращении к странице. Все работает в модальном окне отображается. Но когда человек отправил форму и закрыл ее, он остается на странице с формой. А ведь в условии сказано что нужно форму отсылать с любой страницы. То есть по факту его надо как то вернуть на ту страницу с которой он перешел для оправки формы. Опять загвоздка. Понимаю что можно написать скрипт на jqwery и вернуть его, но надо его поискать (пока не занимался этим).
3. Третий вариант. К странице с формой подключил скрипт js (взял здесь https://niklan.net/blog/125 - пример №5). Все сделал работает, Но опять загвоздка. Как темизировать модальное окно с сообщением об отправке?????Как передать параметру этому окну через dialog ui????
4. Я делал в свое время на другом сайте через fancybox. Я так понимаю что можно и в данном случае сделать либо через fancybox,lightbox, colorbox и аналогичные. Но зачем????
Я так понимаю что в cmf Drupal из коробки доступен и modal и ajax. Так зачем что то искать и писать???
Drupal тем и хорош что под него модули есть на все случаи жизни.
Может кто то что посоветует??? Кто как делал?????
Иногда так бывает, что за работой "глаз что называется замылился" и я не вижу простого подхода для решения казалось бы простого вопроса???
P.S. Пробовал делать через Bootstrap modal и iframe - не подошло. Форма открывается, данные получает, но дальше валидации (проверки заполнения номера по маске) дело не идет. То есть через iframe у меня не получилось. Жду Ваших подсказок.