Категория:
Опубликовано:

Валидация форм с помощью Rules

Валидация на правилах

Часто возникает необходимость проверить на соответствие каким-то условиям ту или иную форму перед сохранением материала.

Или нужно проверить количество материалов созданных пользователем.

Ну или еще что-нибудь - сравнить дни недели, найти искомые слова, проверить "друзей" пользователя, посчитать Userpoint'ы...

В общем нужна валидация формы.

Ниже рассмотрим пример, с помощью которого это можно будет реализовать на правилах.

Шаг 1. Подключение и настройка модуля

Во всем этом не легком деле нам поможет модуль Rules Forms Support. Его нужно установить и включить.

После включения нужно настроить модуль для нужных нам форм. Для этого перейдем по следующему пути: Управление » Конфигурация » Процесс » Правила » Вкладка "FORMS SUPPORT" ("admin/config/workflow/rules/forms").

И включаем отображение сообщений в формах:

Включение Rules Forms Support

После этого можно будет активировать поддержку форм для любой формы на сайте. Активируем только для нужной нам - страницы добавления статьи.

Перейдем на страницу создания нашего материала, в этом случае "node/add/article".

И увидим вверху сообщение позволяющее активировать эту форму для правил.

Активация формы

Давайте её активируем - нажимаем на ссылку в сообщении. Попадаем на страницу настройки события, где можно указать название события (я поставлю "Форма создания статьи") и добавить события валидации на все кнопки в форме. Сохраняем настройки.

Теперь наша форма будет доступна в настройках правил.

Для данного примера нам хватит одной этой формы, потому я сразу отключу показ сообщений. Чтоб не мешали. Сделать это можно на той же странице где мы её включили ("admin/config/workflow/rules/forms").

Шаг 2. Работа с правилами

Вкратце покажу что нам дала активация формы для правил:

Во первых. Стали доступны события по нашей форме, среди которых есть всевозможные значения как самой формы, так и каждой кнопки присутствующей в форме (закачать изображение/файл, сохранить ноду, предпросмотр, удаление...). Доступны события нажатия на кнопку, отправка данных, валидация.

События в правилах

В общем все чего душа пожелает...

Во вторых. Добавились условия для проверки элементов формы:

Условия

Ну и в третьих. Новые действия, их тоже целая куча, и среди них есть такие, как например изменение веса виджета, отключение или скрытие элемента формы, вывод HTML и ошибок в элементе формы или на экран и т.п.

Действия

Шаг 3. Создание простого правила

Перейдем к созданию правила.

Создадим самое простое правило, запрещающее публиковать статью пользователям с определенной ролью. Правило будет выводить сообщение и перенаправлять пользователя на главную, вместо сохранения материала.

Создаем новое правило на странице правил ("admin/config/workflow/rules").

В качестве события выбираем "Форма создания статьи is being built", тобишь при загрузке страницы создания статьи.

Создание правила

В условиях добавим проверку пользователя на его роли. В данном примере я выберу не авторизированного пользователя.

Проверка роли

Добавим действие, в котором перенаправим несостоявшегося автора на главную страницу сайта.

Добавление переадрессации

А также сообщим его что сегодня не его день...

Вывод сообщения.png

Готово. Вот на всякий случай скрин правила.

Теперь анонимные пользователи будут перенаправляться на главную при попытке создать статью.

Если у Вас возникли вопросы, замечания, предложения или просто благодарность - пишите в комментариях.
Делитесь полезными материалами в социальных сетях.
Добавить комментарий