最新消息: 新版网站上线了!!!

yii2验证的方法

 Yii2.0验证类型

......
public function rules(){
	return [
		[['boolean_var'],'boolean'],
		[['number_min'],'number'],
		[['integer_var'],'integer'],
		[['double_var'],'double'],
		[['string_var'],'string'],
	];
}
......

Yii2.0验证必填

......
public function rules(){
	return [
		[['username'],'required'],
		[['password', 'email', 'phoneno'], 'required'],
	];
}
......

Yii2.0初始值设置

......
public function rules(){
	return [
		// set "email" as null if they are empty
		[['email'],'default'],
		// set "level" to be 111 if it is empty
		[['level'],'default','value'=>'111'],
	];
}
......

Yii2.0验证最小到最大

......
public function rules(){
	return [
		[['number_min'],'number','min'=>10],
		[['number_max'],'number','max'=>100],
		[['number_min_max'],'number','min'=>10,'max'=>100],
	];
}
......

Yii2.0验证字符串的长度

......
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]],
	];
}
......

  Yii2.0验证上传文件的类型

......
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,
		],

	];
}
......

Yii2.0验证日期的合法性

......
public function rules(){
	return [
		[['date_var'],'date', 'format'=>'d-m-yy'],
		[['from_date', 'to_date'], 'default', 'value' => null],
		[['from_date', 'to_date'], 'date'],

	];
}
......

 Yii2.0验证url和邮箱

......
public function rules(){
	return [
		['email_var','email'],
		['url_var','url'],
		//prepend the 'http' with url if it is not available 
		['website', 'url', 'defaultScheme' => 'http'],
	];
}
......

  Yii2.0

......
public function rules(){
	return [
		[['unique_var'],'unique'],
		[['email'], 'unique']
		//email is validated in secondary_email column
		['email', 'unique', 'targetAttribute' => 'secondary_email'],


		// need unique together, both will receive error message
		[['email', 'secondary_email'], 'unique', 'targetAttribute' => ['email', 'secondary_email']],
		[['lastname','firstname'], 'unique', 'targetAttribute' => ['firstname','lastname']],

		// need unique together, but email only will receive error message
		['email', 'unique', 'targetAttribute' => ['email', 'secondary_email']],
		// (email) and secondary_email in email (using a1 value)
		['user_name', 'exist', 'targetAttribute' => ['email', 'secondary_email' => 'email']],

	];
}
......

exist Validation 在Yii2.0

['user_name', 'exist'],
//email should not be exist in secondary_email
['email', 'exist', 'targetAttribute' => 'secondary_email'],
//sound likes composite primary key
[['user_name', 'email'], 'exist', 
		'targetAttribute' => ['user_name', 'email']],

// user_name needs to exist by checking the existence of ...
// (email) and secondary_email in email (using a1 value)
['user_name', 'exist', 
		'targetAttribute' => ['email', 'secondary_email' => 'email']],
//find exist email in secondary_email
['user_name', 'exist', 
		'targetAttribute' => ['email' => 'secondary_email']],

Yii2.0过滤字段

......
public function rules(){
	return [				
		[['filter_trim'],'filter','filter'=>'trim'],
		[['filter_trim'],'filter','filter'=>'strtolower'],
		['filter_custom_function', 'filter', 'filter' => function ($value) {
			// your concept
			if($value=='')
				return '';
			return 'Value Changed';
		}],
	];
}
......

Yii2.0随机验证

......
public function rules(){
	return [
		['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],
	];
}
......

Compare Validation In Yii2.0验证字段的是否一制

compareAttribute: It would be the name of the attribute suffixed with _repeat.
compareValue : A constant value , it should be compared with input value.
operator : What type of condition we have to check They are ‘==’,’===’,’>’,’>=’,’<','<=', '!=','!=='
Ex: Compare Password And Confirm Password

……
public function rules(){
	return [
		[[‘passwordConfirm’], ‘compare’, ‘compareAttribute’ => ‘password’],		
		// validates if the value of “password” attribute equals to that of “password_repeat”
		[‘password’, ‘compare’],//password_repeat

		[‘age’, ‘compare’, ‘compareValue’ => 18, ‘operator’ => ‘>=’],

		[[‘password’,’date_var’],’safe’],
	];
}
……

Custom Validation In Yii2.0

......
public function rules(){
	return [
		['custom_validation','custom_function_validation', 'values'=>['One', 'Two']],
	];
}
public function custom_function_validation($attribute, $params){
	// add custom validation
	if (!in_array($this->$attribute, $params['values'])) 
		$this->addError($attribute,'Custom Validation Error');
}
......

Inline Custom Validation In Yii2.0

......
public function rules(){
	return [
		['token', function ($attribute, $params) {
			if (!ctype_alnum($this->$attribute)) {
				$this->addError($attribute, 'The token must contain letters or digits.');
			}
		}],
	];
}
......

captcha Validation In Yii2.0

......
public function rules(){
	return [
		// set captcha validation
		['verificationCode', 'captcha'],
	];
}
......

match Validation In Yii2.0

['user_name', 'match', 'pattern' => '/^[a-z]\w*$/i']

Full Test Validation Model

<?php
namespace app\models;
class Testmodel extends \yii\db\ActiveRecord
{
	/** Declare class varibles**/
	/** boolean values **/
	public $boolean_var;
	
	public $default_value;
	
	/** number values **/
	public $integer_var;
	public $double_var;
	public $number_min;
	public $number_max;
	public $number_min_max;
	
	/** string values **/
	public $min_string;
	public $max_string;
	public $min_max_string;
	public $min_max_string2;
	
	/** date values **/
	public $date_var;
	
	/** Email And URL values **/
	public $email_var;
	public $url_var;
	
	public $unique_var;
	
	/** Range values **/
	public $range_in_min_max;
	public $range_in;
	public $range_in_string;
	
	/** Password values **/
	public $password;//error
	public $passwordConfirm;//error
	
	/** File values **/
	public $file_image;
	public $file_var;
	
	public $custom_validation;
	
	/** Filter values **/
	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) {
				// your concept
				if($value=='')
					return '';
				return 'Value Changed';
		}],

		['range_in_min_max', 'in','range'=>range(5,20)],

		['range_in','in','range'=>['en','fr','zn'],'strict'=>false], //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){
		// add custom validation
		$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',
			
		];
	
	}
}
?

转载请注明:谷谷点程序 » yii2验证的方法