Вывод сообщений валидации формы рядом с формой

При возникновении ошибок, во время проверки формы друпал выполняет две вещи, которые отражаются на фронт-энд — добавляет сообщение об ошибке в стек сообщений и маркирует классом error поле, содержащее ошибку.

Если форма находится далеко от места вывода списка сообщений, выглядит это совсем не юзер-френдли.

Здесь я хочу рассмотреть самый простой подход, когда вывод сообщений об ошибках формы переносится непосредственно к самой форме.

Я не собираюсь переносить вывод всех сообщений в шаблоне к форме, а только сообщения об ошибках, которые относятся к конкретной форме.

Момент захвата сообщений об ошибах

Ошибки в массив $_SESSION[‘messages’] добавляются в момент рендера формы. Т.е. перехват нужно произвести уже после кода вроде:

В этот момент функция form_get_errors() начнет возвращать список ошибок формы, если они были найдены.

Убираем ошибки из стека сообщений

Сообщения drupal накапливает в массиве $_SESSION[‘messages’], и выяснить их происхождение нельзя, т.к. кроме самого текста ничего там нет. Чтобы удалить сообщения, относящиеся к форме, мы будем сравнивать список, полученный из form_get_errors() с тем, что хранит $_SESSION[‘messages’][‘error’].

Пример показывает как можно получить сообщения об ошибках формы и удалить их из общего списка.

Мало букафф? Читайте есчо !

Подключаем suggestions list в диалог CKeditor - Link

Август 10, 2021 г.

Link - это штатный диалог, который используется в CKeditor для редактирования ссылок. И выглядит он как показано на картинке сверху. Он хорошо выполняет ...

Читать

Как получить текущий id node в drupal из кода программы?

Ноябрь 8, 2016 г.

Можно использовать анализ адреса хранимый Drupal в $_GET['q'] и/или анализ частей адреса, получаемых функцией arg(N). Оба варианта по сути делают одно и тоже - анализ внутреннего адреса, который для публикации имеет вид: node/%NID%. Я использую функцию ...

Читать

Программное создание параграфов (ParagraphsItemEntity) в Drupal

Май 24, 2019 г.

Пример кода, как программно реализовать создание параграфа (речь идет о модуле - paragraphs). Обычно параграфы создаются редакторами через админку, но иногда требуется создать новый параграф с помощью кода, например, при импорте данных, структурных ...

Читать

Возможные проблемы Invalid form POST data

Октябрь 24, 2019 г.

Браузер сообщает об ошибке всплывающим окном вроде того, что на скриншоте. Сообщается, что AJAX завершен неправильно. Но основной симптом - что не работают ...

Читать
 

Комментарии к «Вывод сообщений валидации формы рядом с формой»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: