Yii2 速查表:数据验证规则

▪ 前言

https://nai8.me/tool-sc.html
更详细的参见官方手册的 输入验证 核心验证器,以下仅整理出常用的方法以供参考

▪ 示例

▪ 默认值
['email', 'default', 'value'=>'lengdo@163.com'] 
▪ 去除首尾空白字符
['email', 'trim']
['email', 'filter', 'filter'=>'trim']  
▪ 使用自定义函数过滤并赋值
['sex', 'filter', 'filter'=>function($value){return (int)$value;}],
['email', 'filter', 'filter'=>function($value){ return trim($value); }]  

过滤函数返回的值将替换客户端提交的 email 字段值

▪ 检查字段必须填写
// 没有填写时提示错误
['email', 'required', 'message'=>'{attribute} 不能为空']
▪ 检查字符串长度
// 不符合条件时提示错误
['email', 'string', 'length'=>[3,20], 'message'=>'{attribute} 长度必须在 3~20 之间']
['email', 'string', 'min'=>3, 'max'=>20, 'message'=>'{attribute} 长度必须在 3~20 之间']
▪ 检查格式类型
// 非指定类型时提示错误
['age', 'integer', 'message'=>'{attribute} 必须为整数']
['man', 'boolean', 'message'=>'{attribute} 必须为布尔格式']

['height', 'double', 'message'=>'{attribute} 必须为浮点数']
['weight', 'number', 'message'=>'{attribute} 必须为数字格式']

['birthday', 'date', 'message'=>'{attribute} 必须为日期格式']
 
['site', 'url', 'defaultScheme'=>'http', 'message'=>'{attribute} 必须为URL格式 ']
['email', 'email', 'message'=>'{attribute} 必须为邮件地址']

检查数组类型
// 必须为数组,并且每项值为字符类型
['privileges', 'each', 'rule'=>['string']],
验证码
['verificationCode', 'captcha']
▪ 检查邮箱是否唯一
// 不唯一时提示错误
['email', 'unique', 'targetClass'=>'common\models\User', 'message'=>'邮箱已经存在']

// 编辑数据时,如果我们没有改变 email 的值,那么使用上面的代码,那么就会出现 '邮箱已经存在' 错误,所以我们必须要过滤掉当前正在编辑的数据行
// 注意:user_id 是 user 数据表的主键,同时我们需要把 user_id 添加到 模型 的 rules 中,这样我们获得客户端提交的 user_id
['email', 'unique', 'targetClass'=>'common\models\User', 'filter'=>function($query){$query->andWhere(['!=','user_id',(int)$this->user_id]);}, 'message'=>'邮箱已经存在']
▪ 检查邮箱是否存在
// 不存在时提示错误
// 默认 email 值将与数据表中的 email 字段进行比较
['email', 'exist', 'targetClass'=>'common\models\User', 'message'=>'指定的邮箱不存在']

// 不存在时提示错误
// 将 email 值和数据表中 username 字段进行比较
['email', 'exist', 'targetClass'=>'common\models\User', 'targetAttribute'=>'username', 'message'=>'指定的邮箱不存在']

// 不存在时提示错误(含条件)
// 将 email 值和数据表中 username 字段进行比较且字段 sex == 'man'
['email', 'exist', 'targetClass'=>'common\models\User', 'filter'=>['sex'=>'man'], 'message'=>'指定的邮箱不存在']
['email', 'exist', 'targetClass'=>'common\models\User', 'filter'=>function($query){$query->andWhere(['=','sex','man']);}, 'message'=>'指定的邮箱不存在']
▪ 检查输入的两个值是否一致
// 不一致时提示错误
['password01', 'required']  // 必须要加上这一句 
['password01', 'compare', 'compareAttribute'=>'password02', 'operator'=>'===']  
数值范围检查
['level', 'in', 'range'=>[1,2,3]]
['height', 'compare', 'compareValue'=>30, 'operator'=>'>=']  
▪ 文件上传
['textFile', 'file', 'extensions'=>'txt,rtf,doc', 'maxSize'=>1024*1024*1024, 'tooBig'=>'文件太大', 'wrongExtension'=>'文件扩展名错误']
▪ 图片上传
['avatar', 'image', 'extensions'=>['png', 'jpg'], 'minWidth' => 100, 'maxWidth' => 1000,     'minHeight'=>100, 'maxHeight'=>1000, ]  
使用正则表达式
['mobile', 'match', 'pattern'=>'/^[1][358][0-9]{9}$/'],
['username', 'match', 'pattern'=>'/^[a-z]w*$/i']
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值