核心验证器
Yii2提供了一系列的核心验证器,这篇文章总体上介绍了一下核心验证器的使用方法:
boolean真假验证器
检查0和1、真或者假等情况,可以自定义trueValue和falseValue
严格模式,在严格模式下,当前值和对照值采用===作比较
存在客户端验证,并默认开启
[
['selected','boolean'],
['deleted','boolean','trueValue'=>true,'falseValue'=>false,'strict'=>true],
]
captcha图片验证码
需要先实现图片验证码接口
需要制定图片验证码接口地址,默认为site/captcha
会进行前端hash验证
[
['verificationCode','captcha'],
]
compare比较验证器
支持==、===、!=、!==、>、>=、<、<=运算符,默认为==
常量比较,比如比较当前属性和一个固定值的大小,'compareValue' => 30
变量比较,比如比较当前属性和另外一个属性的大小,'compareAttribute' => 'workyears'
[
// 年龄必须大于或等于30
['age','compare','compareValue'=>30,'operator'=>'>='],
// 年龄必须大于工龄
['age','compare','compareAttribute'=>'workyears','operator'=>'>'],
]
date日期验证器
验证日期是否合法
验证日期已经是否在某个日期范围内
能指定格式format
[
// from和to都得是合法日期
[['from','to'],'date'],
// from和to都得是日期时间,并且在2016-06-01 10:00:00和2016-07-15 20:00:00之间
[['from','to'],'date','format'=>'php:Y-m-d H:i:s','min'=>'2016-06-01 10:00:00','max'=>'2016-07-15 20:00:00'],
// from得是日期时间,并且会自动转成unixtime
['from','date','timestampAttribute'=>'from'],
]
default默认值验证器
当值为空时会设置默认值
默认值可以为固定值也可以为一个闭包函数
[
// 若 "country" 为空,则将其设为 "USA"
['country','default','value'=>'USA'],
// 若 "from" 和 "to" 为空,则分别给他们分配自今天起,3 天后和 6 天后的日期。
[['from','to'],'default','value'=>function($model, $attribute){
returndate('Y-m-d', strtotime($attribute ==='to'?'+3 days':'+6 days'));
}],
]
double数值验证器
底层是NumberValidator实现
允许浮点数
each数组验证器
数组验证器,会对数组中每个元素进行验证
rule是规则,就是rules去掉第一个元素,可以递归
allowMessageFromRule,错误是否来自rule验证器,默认为真
[
// 检查categoryIDs是数组并且数组中每个元素是整数
['categoryIDs','each','rule'=> ['integer']],
]
email邮箱验证器
邮箱格式验证器,检查是否为合法邮箱
checkDNS是否检查域名合法性,默认为假
[
// 检查 "email" 是否为有效的邮箱地址
['email','email'],
]
exist存在验证器
检查数据是否在数据库中存在
targetClass可以指定表
targetAttribute可以指定字段
filter可以指定查询条件
[
// a1 需要在 "a1" 特性所代表的字段内存在
['a1','exist'],
// a1 必需存在,但检验的是 a1 的值在字段 a2 中的存在性
['a1','exist','targetAttribute'=>'a2'],
]
required : 必须值验证属性
[['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息'];#说明:CRequiredValidator 的别名, 确保了特性不为空.
email : 邮箱验证
['email','email'];#说明:CEmailValidator的别名,确保了特性的值是一个有效的电邮地址.
match : 正则验证
[['字段名'],match,'pattern'=>'正则表达式','message'=>'提示信息'];
[['字段名'],match,'not'=>ture,'pattern'=>'正则表达式','message'=>'提示信息'];/*正则取反*/#说明:CRegularExpressionValidator 的别名, 确保了特性匹配一个正则表达式.
url : 网址
['website','url','defaultScheme'=>'http'];#说明:CUrlValidator 的别名, 确保了特性是一个有效的路径.
captcha : 验证码
['verificationCode','captcha'];#说明:CCaptchaValidator 的别名,确保了特性的值等于 CAPTCHA 显示出来的验证码.
safe : 安全
['description','safe'];
compare : 比较
['age','compare','compareValue'=>30,'operator'=>'>='];#说明:compareValue(比较常量值) - operator(比较操作符) #说明:CCompareValidator 的别名,确保了特性的值等于另一个特性或常量.
default : 默认值
['age','default','value'=>null];#说明:CDefaultValueValidator 的别名, 为特性指派了一个默认值.
exist : 存在
['username','exist'];#说明:CExistValidator 的别名,确保属性值存在于指定的数据表字段中.
file : 文件
['primaryImage','file','extensions'=> ['png','jpg','gif'],'maxSize'=>1024*1024*1024];#说明:CFileValidator 的别名, 确保了特性包含了一个上传文件的名称.
filter : 滤镜
[['username','email'],'filter','filter'=>'trim','skipOnArray'=>true];#说明:CFilterValidator 的别名, 使用一个filter转换属性.
in : 范围
['level','in','range'=> [1,2,3]];#说明:CRangeValidator 的别名,确保了特性出现在一个预订的值列表里.
unique : 唯一性
['username','unique']#说明:CUniqueValidator 的别名,确保了特性在数据表字段中是唯一的.
integer : 整数
['age','integer'];
number : 数字
['salary','number'];
double : 双精度浮点型
['salary','double'];
date : 日期
[['from','to'],'date'];
string : 字符串
['username','string','length'=> [4,24]];
boolean : 是否为一个布尔值
['字段名', 'boolean', 'trueValue' => true, 'falseValue' => false, 'strict' => true]; #说明:CBooleanValidator 的别名