От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. Данная статья будет логическим продолжением предыдущей, где мы работали с формами. Здесь же мы рассмотрим понятие Yii2 валидация, иными словами, мы узнаем, для чего необходима валидация форм в Yii и как объявить правила валидации форм.
Собственно, ответ на вопрос о необходимости правил валидации должен быть понятен уже из предыдущей статьи, в которой мы создали простейшую форму. Как мы увидели, без правил валидации данные формы просто так не загружаются в модель, работающую с формой. Это первая причина использовать валидацию форм. Вторая причина не менее очевидна: мы так или иначе производим различную валидацию. Так зачем нам что-то писать, если фреймворк предлагает нам большой выбор валидаторов, которыми мы и воспользуемся.
Здесь мы познакомимся лишь с некоторыми из валидаторов. С полным же их списком вы можете познакомиться в документации к фреймворку Yii2. Итак, правила валидации полей формы мы должны описывать в методе rules() модели формы. Данный метод должен возвращать массив, в котором к свойствам модели (полям формы) применены те или иные валидаторы. Давайте используем первый валидатор, которым пользуются чаще других — это валидатор required. Как следует из названия, валидатор проверяет, заполнено ли поле. Если поле окажется пустым — валидатор вернет ошибку валидации.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class TestForm extends Model { public $name; public $email; public function rules() { return [ [['name', 'email'], 'required'], ]; } } |
Давайте теперь попробуем вернуться к форме на странице, поместить курсор в поля формы и после убрать курсор, не заполняя поле.
Замечательно, не так ли? Валидация работает и при том работает даже на клиенте, что очень удобно. Коль у нас есть поле для ввода email, давайте используем еще один валидатор, который так и называется — email. Данный валидатор проверяет строку на соответствие формату адреса email.
1 2 3 4 5 6 7 |
public function rules() { return [ [['name', 'email'], 'required'], ['email', 'email'], ]; } |
Как видим, новое правило валидации помогло проверить валидность email. Проверим теперь, сработает ли загрузка данных из формы в модель, отправив тестовые данные. Напомню, код действия, принимающего данные, будет пока что примерно таким:
1 2 3 4 5 6 7 8 |
public function actionPage() { $form_model = new TestForm(); if($form_model->load(\Yii::$app->request->post())){ var_dump($form_model); } return $this->render('page', compact('form_model')); } |
Как видим, данные прошли валидацию и были успешно загружены в модель формы, соответствующие свойства модели получили значения и мы можем работать с полученными данными. Но это уже тема следующих статей.
Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.
Комментарии (2)