25-07-2019

Валидация Yii2

 

Для того что бы воспользоваться API yii2 валидации, нужно  в моделе создать метод rules() и в return [ перечислить правила валидации ];. Простой пример валидации на обязательные поля:

<?php

namespace app\models;

use yii\db\ActiveRecord;


class User extends ActiveRecord{

    /**

     * @return string название таблицы, сопоставленной с этим ActiveRecord-классом.

     */

    public static function tableName(){

        return 'user';

    }

    public function rules(){

    return [

        // атрибут required указывает, что name, email обязательны для заполнения
        [['name', 'email'], 'required'],

        //валидация эл.почты
        ['email', 'email'],

       //дальше через запятую перечисляем еще правила валидации

    ];
 }
}

 

В этой статье перечислю основные правила валидации данных:

 

//Валидация на обязательные поля
public function rules(){
  return [
    //атрибут required указывает, что name, email обязательны для заполнения
    [['name', 'email'], 'required'],
  ];
}


//Делаем проверку на корректную эл.почту
public function rules(){
  return [
   ['email', 'email'],
  ];
}

 

Мы так же можем задавать сообщение об ошибке при валидации данных.

//задаем свое сообщение об ошибке
public function rules(){
  return [
   ['username', 'required', 'message' => 'Please choose a username.'],
  ];
}

//устанавливаем правила для валидации только строчные и максимальная длина 128 символов
public function rules(){
  return [
   [['name', 'email'], 'string', 'max' => 128],
  ];
}

//сверяем пароли
public function rules(){
  return [
   ['password', 'compare', 'compareAttribute' => 'password_repeat'],
  ];
}

//устанавливаем значение  null по умолчанию
public function rules(){
  return [
   ['age', 'default', 'value' => null],
  ];
}

// проверяет, что "primaryImage" - это загруженное изображение в формате PNG, JPG или GIF
// размер файла должен быть меньше 1MB
public function rules(){
  return [
   ['primaryImage', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024*1024],
  ];
}

//обозначает "description" как безопасный атрибут
public function rules(){
  return [
   ['description', 'safe'],
  ];
}

Полный перечень всех встроенных функций валидации находиться ТУТ.

Возможно вас это заинтересует?