Yii2验证器(Validator)用法分析


Posted in PHP onJuly 23, 2016

本文实例讲述了Yii2验证器(Validator)用法。分享给大家供大家参考,具体如下:

先看一下验证器的使用。

public function rules()
{
  return [
    [['email', 'password'], 'required'],
    ['password', 'string', 'min'=>6],
  ];
}

如上所示,验证器主要使用在rules里面,对当前model里面的属性值进行验证以检查是否满足某种要求。

验证器使用格式:

书写格式为:[需要验证的属性,验证器名称,验证器参数]。

如果需要验证的属性为多个可用数组,如果为一个属性可用字符串也可用数组来表示。

每个属性都可以有多个验证器,如上面的password使用了 required和string两个验证器。

常用验证器:

Yii2已经内置了一些常用的验证器。所有的验证器都从基类yii\validators\Validator继承实现。我大概总结下有这么几类。

数字相关:

integer——整数
用来检测属性值是否为整数,以及最大、最小值检测等。(yii\validators\NumberValidator)

double——浮点
用来检测属性值是否为浮点数,即小数。(yii\validators\NumberValidator)

number——数字
这个和上面的double完全相同,只是用了2个名称。(yii\validators\NumberValidator)

格式相关:

date——日期
检验属性值是否为正确的日期格式。(yii\validators\DateValidator)

email——邮件
检测属性值是否是正确的电子邮件格式。(yii\validators\EmailValidator)

url——URL
用来判断属性值是否是正确的url地址。(yii\validators\UrlValidator)

对值进行函数处理:

filter——过滤器
这个是对属性值进行加工处理的。如对属性值加前缀、替换特定的字符串等等。(yii\validators\FilterValidator)

trim——裁边
这个是对属性值进行加工处理的。只是去掉字符串两侧的空格、或指定的字符串。(yii\validators\FilterValidator)

上传文件验证:

file——文件
这个主要是对上传的文件进行验证,如格式、大小等。(yii\validators\FileValidator)

image——图片
这个和上面的file验证器差不多,不过是专门用来验证图片的。(yii\validators\ImageValidator)

判断比较:

compare——比较
用来对两个属性值进行比较,如相等、大于、小于比较等。(yii\validators\CompareValidator)

in——包含(范围)
用来检测属性值是否包含在指定的数组中。(yii\validators\RangeValidator)

exist——存在
用来检测在数据表中是否已经存在此属性值。(yii\validators\ExistValidator)

unique——唯一性
这个和exist差不多,用来检测值是否是唯一。(yii\validators\UniqueValidator)

string——字符串
对属性值进行长度判断,如最大长度、最短长度等。(yii\validators\StringValidator)

boolean——布尔型
用来检查属性的值是否为布尔值。(yii\validators\BooleanValidator)

default——默认值
这个是用来给属性设置默认值的。如当属性值为null的时候,给它设置为 空的默认值。(yii\validators\DefaultValueValidator)

required——必填
这个用来检查属性值是否为空。(yii\validators\RequiredValidator)

captcha——验证码
这个主要是在界面使用验证码的时候对验证码进行验证的。(yii\captcha\CaptchaValidator)

match——正则表达式
这个就比较强大了,用来检测属性值是否匹配给出的正则。上面所列出的基本都可以用这个实现。(yii\validators\RegularExpressionValidator)

其它:

safe——安全
这个不进行验证,仅仅用来指定属性值是安全的。(yii\validators\SafeValidator)

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中实现进程间通讯
Oct 09 PHP
其他功能
Oct 09 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
php实现微信支付之现金红包
May 30 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
Smarty模板类内部原理实例分析
Jul 03 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 #PHP
Yii2简单实现多语言配置的方法
Jul 23 #PHP
yii2控制器Controller Ajax操作示例
Jul 23 #PHP
PHP实现清除MySQL死连接的方法
Jul 23 #PHP
php实现批量修改文件名称的方法
Jul 23 #PHP
golang与PHP输出excel示例
Jul 22 #PHP
PHP微信支付实例解析
Jul 22 #PHP
You might like
php的curl实现get和post的代码
2008/08/23 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
js控制div及网页相关属性的代码
2009/12/19 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
python实现公司年会抽奖程序
2019/01/22 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
python代码中怎么换行
2020/06/17 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
Golang jwt身份认证
2022/04/20 Golang