验证规则

1、内置验证规则

   [['sex', 'partner_id'], 'integer'],
[['partner_id', 'camp_id',], 'required'],
[['created_at', 'pics'], 'safe'],
[['name'], 'string', 'max' => 16],
  [['interest', 'quota'], 'number'],
   [['path'], 'unique'],
  ['email', 'email'],
  ['website', 'url', 'defaultScheme' => 'http']; #说明:CUrlValidator 的别名, 确保了特性是一个有效的路径.
  ['username', 'unique', 'targetClass' => '\backend\models\User', 'message' => '用户名已存在.'],
  [['file'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg'],
 

2、正则验证规则

//默认值
['status', 'default', 'value' => self::STATUS_ACTIVE],
//区间
['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],
//正则
['mobile','match','pattern' => '/^1[3456789]{1}\d{9}$/','message'=>'请输入正确的手机号'],
['name', 'match','not'=>true, 'pattern' => '/^[0-9]+/','message'=>'不能全为数字或以数字开头'],

3、过滤

    ['desc', 'filter', 'filter' => function ($value) {
if (empty($value)){
return null;
}
//过滤特殊字符
return Str::purify($value);
}],

filter(CFilterValidator )-----过滤验证方法:
实例:

['name', 'test', 'message'=> '请填写姓名']
public function test($object, $attributes) {
if($this->name != '张先森') {
$this->addError($object, $attributes['message']);
}
}

//去空格

['username', 'password', 'repassword', 'captcha', 'age', 'sex', 'phone','email'], 'filter', 'filter'=>'trim', 'on'=>'register'],

4、验证码

  ['yzm', 'captcha'],

5、适用场景(自定义场景、或方法)

 ['shop_id', 'required','on'=>self::SCENARIO_ADMIN_CREATE],

6、比较

  ['quota', 'compare', 'compareValue' => 9999.99,'type'=>'number', 'operator' => '<='],//
[['discount','payment','pay_method'],'default','value'=>0],
 
['status', 'compare', 'compareValue' =>$this->oldAttributes['status'],'type'=>'number', 'operator' => '>=','message'=>'状态不能回撤'],//新修改的状态必须大于原有的状态
数值大小
['age', 'compare', 'compareValue' => 30, 'operator' => '>=']; #说明:compareValue(比较常量值) - operator(比较操作符) #说明:CCompareValidator 的别名,确保了特性的值等于另一个特性或常量.

7、时间

  ['uptime', 'date','format'=>'yyyy-MM-dd', 'timestampAttribute'=>'uptime'],

8,条件唯一(比如同一个班级身份证必须唯一)

 ['name', 'required', 'message' => '请选择门店!'],
['shop_id', 'required', 'message' => '请输入菜品名称!'],
['name', //只有 name 能接收错误提示,数组['name','shop_id']的场合,都接收错误提示
'unique', 'targetAttribute'=>['name','shop_id'] ,
'targetClass' => '\models\Dishes', // 模型,缺省时默认当前模型。
'comboNotUnique' => '选择的门店内,该菜品名称已经存在!' //错误信息
], //自定义函数
['name', 'check','on'=>['create']],//定义规则,在create场景中对name进行check方法验证,下面是方法的定义函数
public function check($attribute,$params){
if (empty($this->shop_id)) {
return $this->addError($attribute,'请选择门店!');
}
$dish=Dishes::findOne(['name'=>$this->name,'shop_id'=>$this->shop_id]);
if($dish){
$this->addError($attribute, '该菜品名称已存在!');
}else{
$this->clearErrors($attribute);
}
}

默认值

['updated_at','default','value'=>time(),'on'=>[self::SCENARIO_ADD],'skipOnEmpty'=>false],
['updated_at','editUpdatedAt',on'=>[self::SCENARIO_ADD],'skipOnEmpty'=>false],

参考文章:https://blog.csdn.net/u010010725/article/details/51099326

yii2验证规则的更多相关文章

  1. Yii2 验证规则

    验证器的使用方法: public function rules() { return [ [['email', 'password'], 'required'], ['password', 'stri ...

  2. yii2 验证规则使用方法

    required : 必须值验证属性 [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredV ...

  3. yii2中自定义验证规则rules

    作者:白狼 出处:www.manks.top/article/yii2_custom_rules 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 ...

  4. yii2中的rules 自定义验证规则详解

    yii2的一个强大之处之一就是他的Form组件,既方便又安全.有些小伙伴感觉用yii一段时间了,好嘛,除了比tp"难懂"好像啥都没有. 领导安排搞一个注册的功能,这家伙刷刷刷的又是 ...

  5. Yii2 rules验证规则

    Rules验证规则:  required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required]    //字段 ...

  6. yii2.0-rules验证规则应用实例

    Rules验证规则:  required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required]    //字段 ...

  7. Yii2验证登录得User类

    Yii2中的  Class yii\web\User 是如果进行验证登录,如果我们使用User类验证登录会给我们减少很多麻烦.在此就拿Yii2中自带的登录功能进行说明. 配置.在应用配置文件compo ...

  8. Yii1.1的验证规则

    在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...

  9. ThinkPhp5.0模型验证规则

    Tp5提供了模型数据规则的验证功能,用于在数据save或者update前验证数据的有效性.Tp5提供校验规则的类为\Think\Validate,默认提供的校验规则可以查看该文件. 在Model文件中 ...

随机推荐

  1. vue中允许你继续使用swiper的组件 vue-awesome-swiper---切图网

    swiper是一个在切图中好用到不行的图片轮播插件,包括3d轮播.h5滑屏等复杂应用都不在话下,到了vue项目一切逻辑完全颠覆了,没有获取dom的概念,还好有 vue-awesome-swiper组件 ...

  2. vue更改数组中的值

    根据下标更改时 vm为新建的vue对象 ind为数组 第一个e为在数组ind中e索引位置 第二个e为更改为值e vm.$set(vm.ind,e,e) 常规更改 arr为数组 //添加 arr.pus ...

  3. Jmeter连接SqlServer数据库并操作

    jmeter支撑多种数据库,且均需要下载对应的驱动包,如下以SqlServer为例作为讲解,其他数据库类似. 1.下载jdbc驱动(注意下载对应版本),并放在jmeter的lib目录下,重启jmete ...

  4. postgresql 文件布局

    我们知道linux中一个思想:一切皆文件,那么在我们安装完postgresql数据库后,她长什么样呢?本文带着你一起揭开她的面纱,看看postgresql的文件布局. 说明:由于安装测试的版本是10. ...

  5. 小白的linux笔记11:放弃gitbook,转战Sphinx

    gitbook生成的html目录不折叠且链接失效 装好了gitbook和nodejs,本以为可以安心的做电子书了. 谁想到gitbook慢的一P,而且导出来的html目录不折叠,最关键的是链接有问题, ...

  6. excel 名次

    RANK.AVG 函数 全部显示 全部隐藏 返回一个数字在数字列表中的排位:数字的排位是其大小与列表中其他值的比值:如果多个值具有相同的排位,则将返回平均排位. 语法 RANK.AVG(number, ...

  7. CVE-2020-1938/CNVD-2020-10487 幽灵猫漏洞

    漏洞描述(后期跟进漏洞分析) Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java ...

  8. 服务器CentOS7上安装MySql

    1.确保服务器系统处于最新状态 [root@localhost ~]# yum -y update如果显示以下内容说明已经更新完成Replaced:grub2.x86_64 1:2.02-0.64.e ...

  9. Wannafly Winter Camp 2020 Day 7A 序列 - 树状数组

    给定一个全排列,对于它的每一个子序列 \(s[1..p]\),对于每一个 \(i \in [1,p-1]\),给 \(s[i],s[i+1]\) 间的每一个值对应的桶 \(+1\),求最终每个桶的值. ...

  10. Qt中MySQL数据库的操作例程

    数据库连接不成功时,要将libmysql.dll放到C:\Qt\Qt5.11.0\5.11.0\mingw53_32\bin和C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin ...