Для того что бы воспользоваться 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'],
];
}
Полный перечень всех встроенных функций валидации находиться ТУТ.
Возможно вас это заинтересует?