Yii2 валидация

Yii2 валидация

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. Данная статья будет логическим продолжением предыдущей, где мы работали с формами. Здесь же мы рассмотрим понятие Yii2 валидация, иными словами, мы узнаем, для чего необходима валидация форм в Yii и как объявить правила валидации форм.

Собственно, ответ на вопрос о необходимости правил валидации должен быть понятен уже из предыдущей статьи, в которой мы создали простейшую форму. Как мы увидели, без правил валидации данные формы просто так не загружаются в модель, работающую с формой. Это первая причина использовать валидацию форм. Вторая причина не менее очевидна: мы так или иначе производим различную валидацию. Так зачем нам что-то писать, если фреймворк предлагает нам большой выбор валидаторов, которыми мы и воспользуемся.

Здесь мы познакомимся лишь с некоторыми из валидаторов. С полным же их списком вы можете познакомиться в документации к фреймворку Yii2. Итак, правила валидации полей формы мы должны описывать в методе rules() модели формы. Данный метод должен возвращать массив, в котором к свойствам модели (полям формы) применены те или иные валидаторы. Давайте используем первый валидатор, которым пользуются чаще других — это валидатор required. Как следует из названия, валидатор проверяет, заполнено ли поле. Если поле окажется пустым — валидатор вернет ошибку валидации.

class TestForm extends Model
{

 public $name;
 public $email;

 public function rules()
 {
 return [
 [['name', 'email'], 'required'],
 ];
 }

}

Yii2 валидация

Давайте теперь попробуем вернуться к форме на странице, поместить курсор в поля формы и после убрать курсор, не заполняя поле.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Yii2 валидация

Замечательно, не так ли? Валидация работает и при том работает даже на клиенте, что очень удобно. Коль у нас есть поле для ввода email, давайте используем еще один валидатор, который так и называется — email. Данный валидатор проверяет строку на соответствие формату адреса email.

public function rules()
{
 return [
 [['name', 'email'], 'required'],
 ['email', 'email'],
 ];
}

Yii2 валидация

Как видим, новое правило валидации помогло проверить валидность email. Проверим теперь, сработает ли загрузка данных из формы в модель, отправив тестовые данные. Напомню, код действия, принимающего данные, будет пока что примерно таким:

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 валидация

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

Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

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

Комментарии (2)

  1. Олег

    Что если не указывать в правилах валидации например name, сможет ли кто нибудь через консоль разработчика создать такое поле или каким нибудь другим способом отправить свои данные?
    Или оно в таком случае всегда будет пустым?

    • Андрей Кудлай

      Поле создать, конечно же, сможет. Но данные из этого поля не будут загружаться в модель. Можете это легко проверить самостоятельно, убрав из правил валидации поле и распечатав модель после отправки формы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree