yii rules 验证详解
- public?function?rules()??
- {??
- ????return?array(??
- ????????array('project_id,?type_id,?status_id,?owner_id,?requester_id,',?'numerical',?'integerOnly'=>true),??
- ????????array('name',?'length',?'max'=>256),??
- ????????array('description',?'length',?'max'=>2000),??
- ????????array('create_time,create_user_id,update_user_id,?update_time',?'safe'),??
- ????????array('id,?name,?description,?project_id,?type_id,?status_id,?owner_id',?'on'=>'search'),??
- ????);??
- }??
- ??
- //required:?必填??
- array('title,content','required'),??
- ??
- //match:?正则表达式验证??
- array('birthday',?'match',?'pattern'=>'%^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$%',?'allowEmpty'=>true,?'message'=>'生日必须是年-月-日格式'),??
- ??
- //email:邮箱格式验证??
- array('user_mail',?'email'),???
- ??
- //url:URL格式验证??
- array('user',?'url'),???
- ??
- //unique:唯一性验证??
- array('username',?'unique','caseSensitive'=>false,'className'=>'user','message'=>'用户名"{value}"已经被注册,请更换'),??
- //caseSensitive?定义大小写是否敏感??
- ??
- //compare:一致性验证??
- array('repassword',?'compare',?'compareAttribute'=>'password','message'=>'两处输入的密码并不一致'),??
- ??
- //length:长度验证???
- ??
- //in:?验证此属性值在列表之中(通过range指定)。??
- ??
- //numerical:?验证此属性的值是一个数字??
- ??
- //captcha:?验证属性值和验证码中显示的一致??
- array('verifyCode','captcha'),??
- ??
- //type:?验证属性的类型是否为type所指定的类型.???
- ??
- ??
- //file:?验证一个属性是否接收到一个有效的上传文件??
- ??
- ??
- //default:?属性指定默认值??
- ??
- ??
- //exist:?验证属性值在数据库中是否存在??
- ??
- ??
- //boolean:?验证布尔属性值??
- ??
- ??
- //date:?检验此属性是否描述了一个日期、时间或日期时间??
- ??
- ??
- //safe:?属性标志为在批量赋值时是安全的。??
- ??
- ??
- //unsafe:?标志为不安全,所以他们不能被批量赋值。?
?
?
二、Yii CModel.rules()方法 、validate预定义完整列表
array(
?array(‘username’, ‘required’),
?array(‘username’, ‘length’, ‘min’=>3, ‘max’=>12),
?array(‘password’, ‘compare’, ‘compareAttribute’=>’password2′, ‘on’=>’register’),
?array(‘password’, ‘authenticate’, ‘on’=>’login’),
);
public function rules()
{
??return array(
??????array(‘title, content, status’, ‘required’),
??????array(‘title’, ‘length’, ‘max’=>128),
??????array(‘status’, ‘in’, ‘range’=>array(1,2,3)),
??????array(‘tags’, ‘match’, ‘pattern’=>’/^[\w\s,]+$/’,
??????????’message’=>’Tags can only contain word characters.’),
??????array(‘tags’, ‘normalizeTags’),
??????array(‘title, status’, ‘safe’, ‘on’=>’search’),
??);
}预定义完整列表:?
?
?
boolean?:?CBooleanValidator?的别名, 确保属性的值是CBooleanValidator::trueValue?或CBooleanValidator::falseValue?.captcha?:?CCaptchaValidator?的别名,确保了特性的值等于?CAPTCHA?显示出来的验证码.compare?:?CCompareValidator?的别名, 确保了特性的值等于另一个特性或常量.email?:?CEmailValidator?的别名,确保了特性的值是一个有效的电邮地址.default?:?CDefaultValueValidator?的别名, 为特性指派了一个默认值.exist?:?CExistValidator?的别名, 确保属性值存在于指定的数据表字段中.file?:?CFileValidator?的别名, 确保了特性包含了一个上传文件的名称.filter?:?CFilterValidator?的别名, 使用一个filter转换属性.in?:?CRangeValidator?的别名, 确保了特性出现在一个预订的值列表里.length?:?CStringValidator?的别名, 确保了特性的长度在指定的范围内.match?:?CRegularExpressionValidator?的别名, 确保了特性匹配一个正则表达式.numerical?:?CNumberValidator?的别名, 确保了特性是一个有效的数字.required?:?CRequiredValidator?的别名, 确保了特性不为空.type?:?CTypeValidator?的别名, 确保了特性为指定的数据类型.unique?:?CUniqueValidator?的别名, 确保了特性在数据表字段中是唯一的.url?:?CUrlValidator?的别名, 确保了特性是一个有效的路径??
yii验证rulesit?分类:?Yii?yii的rules验证?cValidator主要属性?attributes?,builtInValidators,enableClientValidation,message,on,safe,skipOnError
经常用到的属性有?attributes,builtInvalidators,message,on这四个
下面是对应的验证类
required:?CRequiredValidator
filter:?CFilterValidator
match:?CRegularExpressionValidator
email:?CEmailValidator
url:?CUrlValidator
unique:?CUniqueValidator
compare:?CCompareValidator
length:?CStringValidator
in:?CRangeValidator
numerical:?CNumberValidator
captcha:?CCaptchaValidator
type:?CTypeValidator
file:?CFileValidator
default:?CDefaultValueValidator
exist:?CExistValidator
boolean:?CBooleanValidator
date:?CDateValidator
safe:?CSafeValidator
unsafe:?CUnsafeValidator
1、CRequiredValidator??必须值验证属性
requiredValue-mixed-所需的值
strict-boolean-是否比较严格
实例:?array(‘username’,?‘required’),?不能为空
array(‘username’,?‘required’,?‘requiredValue’=>’lh’,’message’=>?‘usernmae?must?be?lh’),?这个值必须为lh,如果填其他值还是会验证不过
array(‘username’,?‘required’,?‘requiredValue’=>’lh’,?‘strict’=>true),?严格验证?还可以在后面加?‘message’=>”,’on’=>这些
2、CFilterValidator?过滤验证属性
filter??方法名?(调用用户自己定义的函数)
实例:
array(‘username’,?‘test’)?function?test()?{?$username?=?$this->username;?if($username?!=?‘lh’){?$this->addError(‘username’,?‘username?must?be?lh’);?}?}
使用这个方法如果你还在array里面写message=>”,给出的提示信息还是你的test里面的。也就是以test里面的错误信息为准
3、CRegularExpressionValidator?-
正则验证属性allowEmpty??是否为空(默认true)
not-是否反转的验证逻辑(默认false)?pattern??正则表达式匹配实例:
//?匹配a-z?array(‘username’,?‘match’,?‘allowEmpty’=>true,?‘pattern’=>’/[a-z]/i’,’message’=>’必须为字母’),
//?匹配不是a-z?array(‘username’,?‘match’,?‘allowEmpty’=>true,?‘not’=>true,?‘pattern’=>’/[a-z]/i’,’message’=>’必须不是字母’),
4、CEmailValidator?邮箱验证属性:
allowEmpty??是否为空
allowName??是否允许在电子邮件地址的名称
checkMx??是否检查电子邮件地址的MX记录
checkPort??是否要检查端口25的电子邮件地址
fullPattern??正则表达式,用来验证电子邮件地址与名称的一部分
pattern??正则表达式,
用来验证的属性值实例:?array(‘username’,?‘email’,?‘message’=>’必须为电子邮箱’,?‘pattern’=>’/[a-z]/i’),
5、CUrlValidator??url验证属性:
allowEmpty??是否为空
defaultScheme??默认的URI方案
pattern??正则表达式
validSchemes??清单应视为有效的URI计划。
实例:
array(‘username’,?‘url’,?‘message’=>’must?url’),
array(‘username’,?‘url’,?‘defaultScheme’=>’http://www.baidu.com’),
6、CUniqueValidator??唯一性验证属性:
allowEmpty??是否为空
attributeName??属性名称
caseSensitive??区分大小写
className??类名
criteria??额外的查询条件
实例:
array(‘username’,?‘unique’,?‘message’=>’该记录存在’),
array(‘username’,?‘unique’,?‘caseSensitive’=>false,?‘message’=>’该记录存在’),
7、CCompareValidator??比较验证属性:
allowEmpty??是否为空
compareAttribute??需要比较的属性
compareValue?-比较的值
operator??比较运算符
strict??严格验证(值和类型都要相等)
实例:?//?与某个值比较?array(‘username’,?‘compare’,?‘compareValue’=>’10′,?‘operator’=>’>’,?‘message’=>’必须大于10′),
//?与某个提交的属性比较?array(‘username’,?‘compare’,?‘compareAttribute’=>’password’,?‘operator’=>’>’,?‘message’=>’必须大于password’),
8、CStringValidator??字符串验证属性:
allowEmpty??是否为空
encoding??编码
is??确切的长度
max??最大长度
min??最小长度
tooLong??定义值太大的错误
tooShort??定义最小长度的错误
实例:?array(‘username’,?‘length’,?‘max’=>10,?‘min’=>5,?‘tooLong’=>’太长了’,?‘tooShort’=>’太短了’),
array(‘username’,?‘length’,?‘is’=>5,?‘message’=>’长度必须为5′),
9、CRangeValidator??在某个范围内属性:
allowEmpty??是否为空
not??是否反转的验证逻辑。
range??array范围
strict??严格验证(类型和值都要一样)
实例:?array(‘username’,?‘in’,?‘range’=>array(1,2,3,4,5),?‘message’=>’must?in?1?2?3?4?5′),
array(‘username’,?‘in’,?‘not’=>true,?‘range’=>array(1,2,3,4,5),?‘message’=>’must?not?in?1?2?3?4?5′),
10、CNumberValidator??数字验证属性:
allowEmpty??是否为空
integerOnly??整数
integerPattern??正则表达式匹配整数
max??最大值
min??最小值
numberPattern??匹配号码
tooBig??值太大时的错误提示
tooSmall??值太小时的错误提示
实例:?array(‘username’,?‘numerical’,?‘integerOnly’=>true,?‘message’=>’must?be?int’),
array(‘username’,?‘numerical’,?‘integerOnly’=>true,?‘message’=>’must?be?int’,?‘max’=>100,?‘min’=>10,?‘tooBig’=>’is?too?big’,?‘tooSmall’=>’is?too?small’),
11、CCaptchaValidator??验证码验证属性:
allowEmpty??是否为空
caseSensitive??区分大小写
12、CTypeValidator??类型验证属性:
allowEmpty??是否为空
dateFormat??日期应遵循的格式模式(‘MM/dd/yyyy’)
datetimeFormat??日期时间应遵循的格式模式(‘MM/dd/yyyy?hh:mm’)
timeFormat??时间应遵循的格式模式(‘hh:mm’)
type??类型?‘string’,?‘integer’,?‘float’,?‘array’,?‘date’,?‘time’?and?‘datetime’
实例:?array(‘username’,?‘type’,?‘dateFormat’=>’MM/dd/yyyy’,?‘type’=>’date’),
13、CFileValidator??文件验证属性:
allowEmpty??是否为空
maxFiles??最大文件数
maxSize??文件的最大值
minSize??最小值
tooLarge??太大时的错误信息
tooMany??太多时的错误信息
tooSmall??太小时的错误信息
types??允许的文件扩展名
wrongType??扩展名错误时给出的错误信息
14、CDefaultValueValidator??默认值属性:
setOnEmpty??设置为空
value??默认值
实例:?array(‘username’,?‘default’,?‘setOnEmpty’=>true,?‘value’=>’lh’),
15、CExistValidator??是否存在属性:
allowEmpty?=?是否为空
attributeName??属性名称
className??类名
criteria??标准
16、CBooleanValidator??布尔类型验证属性:
allowEmpty??是否为空
falseValue??错误状态的值
strict??严格验证
trueValue??真实状态的值
实例:?array(‘username’,?‘boolean’,?‘trueValue’=>1,?‘falseValue’=>-1,?‘message’=>’the?value?must?be?1?or?-1′),
17、CDateValidator??日期验证属性:
allowEmpty??是否为空
format??日期值应遵循的格式模式
timestampAttribute??接收解析结果的属性名称
实例:?array(‘username’,?‘date’,?‘format’=>’MM-dd-yyyy’,’message’=>’must?be?MM-dd-yyyy’)
?