Правила проверки типа данных:
<?php
public function rules()
{
return [
[ ['boolean_var'], 'boolean'],
[ ['number_min'], 'number'],
[ ['integer_var'], 'integer'],
[ ['double_var'], 'double'],
[ ['string_var'], 'string'],
];
}
Правила проверки на обязательное заполнение:
<?php
public function rules()
{
return [
[ ['username'], 'required'],
[ ['password', 'email', 'phoneno'], 'required'],
];
}
Присвоение свойству значения по-умолчанию:
<?php
public function rules()
{
return [
[ ['email'], 'default'],
[ ['level'], 'default', 'value' => '111'],
];
}
Правила задания минимального и максимального значения для числа:
<?php
public function rules()
{
return [
[ ['number_min'], 'number', 'min' => 10],
[ ['number_max'], 'number', 'max' => 100],
[ ['number_min_max'], 'number', 'min' => 10, 'max' => 100],
];
}
Правила задания минимальной и максимальной длины строки:
<?php
public function rules()
{
return [
[ ['min_string'], 'string', 'min' => 10],
[ ['max_string'], 'string', 'max' => 10],
[ ['min_max_string'], 'string', 'min' => 5, 'max' => 10],
['min_max_string2', 'string', 'length' => [4, 10] ],
];
}
Правила проверки типов файлов, параметров изображений:
<?php
public function rules()
{
return [
[ ['file_image'], 'image'],
[ ['file_var'], 'file', 'types' => ['gif', 'jpg'] ],
['file_image', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024*1024],
['file_image', 'image', 'extensions' => 'png, jpg, gif', 'minWidth' => 100, 'maxWidth' => 500, 'minHeight' => 100, 'maxHeight' =>500],
];
}
Правила соответствия формату даты:
<?php
public function rules()
{
return [
[ ['date_var'], 'date', 'format' => 'd-m-yy'],
[ ['from_date', 'to_date'], 'default', 'value' => null],
[ ['from_date', 'to_date'], 'date'],
];
}
Правила соответствия Email, URL
<?php
public function rules()
{
return [
['email_var', 'email'],
['url_var', 'url'],
['website', 'url', 'defaultScheme' => 'http'],
];
}
Правила проверки на уникальные значения:
<?php
public function rules()
{
return [
[ ['unique_var'], 'unique'],
[ ['email'], 'unique']
['email', 'unique', 'targetAttribute' => 'secondary_email'],
[ ['email', 'secondary_email'], 'unique', 'targetAttribute' => ['email', 'secondary_email'] ],
[ ['lastname', 'firstname'], 'unique', 'targetAttribute' => ['firstname', 'lastname'] ],
['email', 'unique', 'targetAttribute' => ['email', 'secondary_email'] ],
['user_name', 'exist', 'targetAttribute' => ['email', 'secondary_email' => 'email'] ],
];
}
Правила проверки свойства на существование:
<?php
public function rules()
{
return [
['user_name', 'exist'],
['email', 'exist', 'targetAttribute' => 'secondary_email'],
[ ['user_name', 'email'], 'exist', 'targetAttribute' => ['user_name', 'email'] ],
['user_name', 'exist', 'targetAttribute' => ['email', 'secondary_email' => 'email'] ],
['user_name', 'exist', 'targetAttribute' => ['email' => 'secondary_email'] ],
];
}
Правила фильтрации свойств:
<?php
public function rules()
{
return [
[ ['filter_trim'], 'filter', 'filter' => 'trim'],
[ ['filter_trim'], 'filter', 'filter' => 'strtolower'],
['filter_custom_function', 'filter', 'filter' => function($value) {
if($value == '') return '';
return 'Value Changed';
}],
];
}
Правила проверки на вхождение в заданный интервал:
<?php
public function rules()
{
return [
['range_in_min_max', 'in', 'range' => range(5, 20)],
['range_in', 'in', 'range' => ['en', 'fr', 'zn'] ],
['range_in_string', 'in', 'range' => ['EN', 'FR', 'ZN'], 'strict' => true],
];
}
Правила сравнения значений:
<?php
public function rules()
{
return [
[ ['passwordConfirm'], 'compare', 'compareAttribute' => 'password'],
['password', 'compare'],
['age', 'compare', 'compareValue' => 18, 'operator' => '>='],
[ ['password', 'date_var'], 'safe'],
];
}
Произвольные правила с вынесением в отдельный метод:
<?php
public function rules()
{
return [
['custom_validation', 'custom_function_validation', 'values' => ['One', 'Two'] ],
];
}
public function custom_function_validation($attribute, $params)
{
if(!in_array($this->$attribute, $params['values'])) $this->addError($attribute, 'Custom Validation Error');
}
Произвольные правила проверки в одну строку:
<?php
public function rules()
{
return [
['token', function ($attribute, $params)
{
if(!ctype_alnum($this->$attribute)) $this->addError($attribute, 'The token must contain letters or digits.');
}],
];
}
Правила проверки Capcha:
<?php
public function rules()
{
return [
['verificationCode', 'captcha'],
];
}
Правила проверки REGEX:
<?php
public function rules()
{
return [
['user_name', 'match', 'pattern' => '/^[a-z]\w*$/i']
];
}
Полный список правил валидации на примере модели Yii2:
<?php
namespace app\models;
class Testmodel extends \yii\db\ActiveRecord
{
public $boolean_var;
public $default_value;
public $integer_var;
public $double_var;
public $number_min;
public $number_max;
public $number_min_max;
public $min_string;
public $max_string;
public $min_max_string;
public $min_max_string2;
public $date_var;
public $email_var;
public $url_var;
public $unique_var;
public $range_in_min_max;
public $range_in;
public $range_in_string;
public $password;
public $passwordConfirm;
public $file_image;
public $file_var;
public $custom_validation;
public $filter_trim;
public $filter_custom_function;
public function rules()
{
return [
[ ['boolean_var'], 'boolean'],
[ [ 'range_in_string'], 'required'],
[ ['default_value'], 'default', 'value' => 'DEFAULT VALUE'],
[ ['integer_var'], 'integer'],
[ ['double_var'], 'double'],
[ ['number_min'], 'number', 'min' => 10],
[ ['number_max'], 'number', 'max' => 100],
[ ['number_min_max'], 'number', 'min' => 10, 'max' => 100],
[ ['file_image'], 'image'],
[ ['file_var'], 'file', 'types' => ['gif', 'jpg'] ],
[ ['date_var'], 'date', 'format' => 'd-m-yy'],
[ ['min_string'], 'string', 'min' => 10],
[ ['max_string'], 'string', 'max' => 10],
[ ['min_max_string'], 'string', 'min' => 5, 'max' => 10],
['min_max_string2', 'string', 'length' => [4, 10] ],
['email_var', 'email'],
['url_var', 'url'],
[ ['unique_var'], 'unique'],
[ ['filter_trim'], 'filter', 'filter' => 'trim'],
[ ['filter_trim'], 'filter', 'filter' => 'strtolower'],
['filter_custom_function', 'filter', 'filter' => function($value) {
if($value == '') return '';
return 'Value Changed';
}],
['range_in_min_max', 'in', 'range' => range(5, 20)],
['range_in', 'in', 'range' => ['en', 'fr', 'zn'], 'strict' => false],
['range_in_string', 'in', 'range' => ['EN', 'FR', 'ZN'], 'strict' => true],
['custom_validation', 'custom_function_validation'],
[ ['passwordConfirm'], 'compare', 'compareAttribute' => 'password'],
[ ['password', 'date_var'], 'safe'],
];
}
public function custom_function_validation($attribute)
{
$this->addError($attribute, 'Custom Validation Error');
}
public function attributeLabels()
{
return [
'boolean_var' => 'Boolean',
'default_value' => 'Default',
'integer_var' => 'Integer',
'double_var' => 'Double Variable',
'date_var' => 'Date',
'custom_validation' => 'Custom',
'number_min' => 'Number Min',
'number_max' => 'Number Max',
'number_min_max' => 'Number Min, Max',
'file_image' => 'File Image',
'file_var' => 'File ',
'url_var' => 'URL',
'unique_var' => 'Unique',
'email_var' => 'Email',
'min_string' => 'Minimum String',
'max_string' => 'Maximum String',
'min_max_string' => 'String Min L:5, Max F1 M:10',
'min_max_string2' => 'String Min L:4, Max F2 M:10',
'range_in_min_max' => 'Range Min L:5, Max F2 M:20',
'range_in' => "Range in (en, fr, zn)",
'range_in_string' => "Range In Strict Mode(EN, FR, ZN)",
'password' => 'Password',
'passwordConfirm' => 'Confirm Password',
'filter_custom_function' => 'Filter Custom Function',
'filter_trim' => 'Trim',
];
}
}