Загрузка ...

Yii2 - Правила валидации свойств модели. Шпаргалка

  1. Правила проверки типа данных
  2. Правила проверки на обязательное заполнение
  3. Присвоение свойству значения по-умолчанию
  4. Правила задания максимального и минимального значения для числа
  5. Правила задания максимальной и минимальной длины строки
  6. Правила проверки типов файлов, параметров изображений
  7. Правила соответствия формату даты
  8. Правила соответствия формату E-mail, URL
  9. Правила проверки на уникальное значение
  10. Правила проверки свойства на существование
  11. Правила фильтрации свойств
  12. Правила проверки на вхождение в заданный интервал
  13. Правила сравнение значений
  14. Произвольные правила проверки с вынесением в отдельный метод
  15. Произвольные правила проверки в одну строку
  16. Правила проверки Сaptcha
  17. Правила проверки 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/

Вам требуются услуги или консультация специалиста по веб-разработке?

Свяжитесь со мной
Цвет элементов сайта