核心验证器

核心验证器

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 的别名 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容