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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
php获取淘宝分类id示例
Jan 16 PHP
给ECShop添加最新评论
Jan 07 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
PHP+mysql实现的三级联动菜单功能示例
Feb 15 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
Apr 09 PHP
Laravel框架下的Contracts契约详解
Mar 17 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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 Calender(日历)代码分享
2014/01/03 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
向左滚动文字 js代码效果
2013/08/17 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
python使用pil生成缩略图的方法
2015/03/26 Python
python执行使用shell命令方法分享
2017/11/08 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
基于python连接oracle导并出数据文件
2020/04/28 Python
详解python with 上下文管理器
2020/09/02 Python
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
2013/04/22 HTML / CSS
美工的岗位职责
2013/11/14 职场文书
烹调加工管理制度
2014/02/04 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
五四青年节活动总结
2015/02/10 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
地雷战观后感
2015/06/09 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
springboot用户数据修改的详细实现
2022/04/06 Java/Android