Как стилизовать валидацию формы в Drupal?

Главные вкладки

Аватар пользователя pingvin156 pingvin156 14 сентября 2017 в 13:39

В валидации формы есть такая замечательная функция drupal_set_message, которая выводит сообщение об ошибке, выводя текст у некорректного поля. А как поступить, если я хочу перейти и сменить стиль этого поля, чтобы его выделить его красным? Иными словами, как изменить стиль поля с ошибкой?

Комментарии

Аватар пользователя BatKor BatKor 17 сентября 2017 в 17:02
1

drupal_set_message($message = NULL, $type = 'status', $repeat = TRUE)
string $type: (optional) The message's type. Defaults to 'status'. These values are supported:

'status'
'warning'
'error'

Если стилизовать вам надо то в CSS,
Если темизировать то так как советуют выше

Аватар пользователя pingvin156 pingvin156 2 октября 2017 в 21:03

Поигрался со status-messages.html.twig. Этот шаблон стилизует сообщение об ошибке, но не само поле, на котором произошла ошибка.
Допустим, в поле регистрации я не ввел обязательное поле. Форма меня возвращает к нему, высвечивая подсказку "Заполните это поле". Мне не нужна эта подсказка. Мне надо изменить стиль самого поля с ошибкой и показать свой блок с сообщением. Как это сделать?

Аватар пользователя fairrandir fairrandir 2 октября 2017 в 21:16

У меня для вас плохие новости - это нативное поведение браузеров. Хорошие новости - теоретически достаточно убрать атрибут required у поля, и усё будет нормуль

Аватар пользователя pingvin156 pingvin156 2 октября 2017 в 21:38

Я правильно понимаю ход мысли, что в таком случае проверку ввода самого поля добавить в вализацию формы? И так для всех полей...
Но вопрос остается... Как мне в таком изменить стиль самого поля, когда ошибка будет выявлена?

Аватар пользователя BatKor BatKor 2 октября 2017 в 22:14
1

Как вариант можно добавить свою функцию валидация и при ошибке делать все что вам угодно.
Ещё один вариант могу предположить что вы путаете drupal-set-message с form-set-error, который в Д8 теперь изменённые . Взгляните на эту страницу с изменениями, где вы найдёте примеры реализации