Yii2 - Правила валидации свойств модели. Шпаргалка
- Правила проверки типа данных
- Правила проверки на обязательное заполнение
- Присвоение свойству значения по-умолчанию
- Правила задания максимального и минимального значения для числа
- Правила задания максимальной и минимальной длины строки
- Правила проверки типов файлов, параметров изображений
- Правила соответствия формату даты
- Правила соответствия формату E-mail, URL
- Правила проверки на уникальное значение
- Правила проверки свойства на существование
- Правила фильтрации свойств
- Правила проверки на вхождение в заданный интервал
- Правила сравнение значений
- Произвольные правила проверки с вынесением в отдельный метод
- Произвольные правила проверки в одну строку
- Правила проверки Сaptcha
- Правила проверки REGEXP
Правила проверки типа данных
// public function rules() { return [ [ ['boolean_var'], 'boolean'], [ ['number_min'], 'number'], [ ['integer_var'], 'integer'], [ ['double_var'], 'double'], [ ['string_var'], 'string'], ]; } //
Правила проверки на обязательное заполнение
// public function rules() { return [ [ ['username'], 'required'], [ ['password', 'email', 'phoneno'], 'required'], ]; } //
Присвоение свойству значения по-умолчанию
// public function rules() { return [ [ ['email'], 'default'], [ ['level'], 'default', 'value' => '111'], ]; } //
Правила задания максимального и минимального значения для числа
// public function rules() { return [ [ ['number_min'], 'number', 'min' => 10], [ ['number_max'], 'number', 'max' => 100], [ ['number_min_max'], 'number', 'min' => 10, 'max' => 100], ]; } //
Правила задания максимальной и минимальной длины строки
// 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] ], ]; } //
Правила проверки типов файлов, параметров изображений
// 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], ]; } //
Правила соответствия формату даты
// public function rules() { return [ [ ['date_var'], 'date', 'format' => 'd-m-yy'], [ ['from_date', 'to_date'], 'default', 'value' => null], [ ['from_date', 'to_date'], 'date'], ]; } //
Правила соответствия формату E-mail, URL
// public function rules() { return [ ['email_var', 'email'], ['url_var', 'url'], ['website', 'url', 'defaultScheme' => 'http'], ]; } //
Правила проверки на уникальное значение
// 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'] ], ]; } //
Правила проверки свойства на существование
// 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'] ], ]; } //
Правила фильтрации свойств
// 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'; }], ]; } //
Правила проверки на вхождение в заданный интервал
// 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], ]; } //
Правила сравнение значений
// public function rules() { return [ [ ['passwordConfirm'], 'compare', 'compareAttribute' => 'password'], ['password', 'compare'], ['age', 'compare', 'compareValue' => 18, 'operator' => '>='], [ ['password', 'date_var'], 'safe'], ]; } //
Произвольные правила проверки с вынесением в отдельный метод
// 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'); } //
Произвольные правила проверки в одну строку
// public function rules() { return [ ['token', function ($attribute, $params) { if(!ctype_alnum($this->$attribute)) $this->addError($attribute, 'The token must contain letters or digits.'); }], ]; } //
Правила проверки Сaptcha
// public function rules() { return [ ['verificationCode', 'captcha'], ]; } //
Правила проверки REGEXP
// public function rules() { return [ ['user_name', 'match', 'pattern' => '/^[a-z]\w*$/i'] ]; } //
Полный список правил валидации на примере модели Yii2
// 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', ]; } } //
Источник: http://www.bsourcecode.com/yiiframework2/validation-rules-for-model-attributes-in-yiiframework-2-0/
Вам требуются услуги или консультация специалиста по веб-разработке?
Свяжитесь со мной