验证规则

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. You are my great sunshine

    "何为孤寂?" "清风,艳日,无笑意." "可否具体?" "左拥,右抱,无情欲." "可否再具体?" ...

  2. QQ常用表情

    以下表情均为QQ官方表情原图,版权归QQ所有,禁止用于商业用途. ![3nEdY9.png](https://s2.ax1x.com/2020/02/21/3nEdY9.png) ![3nEaFJ.p ...

  3. C++析构、拷贝、赋值、移动拷贝函数的几个知识点(不全)

    怕忘了,写这:析构函数不会释放指针成员指向的对象. 众所周知,C++的类如果没有默认构造函数,会自动生成一个. 同理,如果没有复制构造函数即A::A(const A&){}这个函数 ,则系统也 ...

  4. MVC开发模式以及Smarty模板引擎的使用

    Linux 全局安装 composer 将目录切换到/usr/local/bin/目录 cd /usr/local/bin/ 在 bin 目录中下载 composer curl -sS https:/ ...

  5. 使用Docker镜像安装saltshaker

    要求 Saltstack < 2019 Python >= 3.6 Mysql >= 5.7.8 (支持Json的Mysql都可以) Redis(无版本要求) RabbitMQ (无 ...

  6. idea插件不兼容问题

    https://plugins.jetbrains.com/ 找对应版本的插件

  7. HTML+PHP+MySQL 制作最基础的登录页面及验证

    第一步 进入mysql操作终端 新建一个数据库web1:create database web1; 然后在这个数据库里面新建一张表test:create table test(user varchar ...

  8. sqlserver中float转varchar时不显示科学计数法

    MSSQL中 float转换为varchar 变成科学计数法解决方案   在系统初始化的时候,因为有同事,没有在数值型的数据前面加上 单引号,导致进入数据库后都变成float型我们需要做以下转换就能将 ...

  9. 合理使用Android提供的Annotation来提高代码的质量

    概述 Java语言提供了Annotation的机制,让描述性的元数据能够和代码共存.通常我们可以利用Annotation,来做一些标志性的说明.然而Annotation必须和相应的解析工具一起才能工作 ...

  10. 1级搭建类109-Oracle 12cR2 SI FS(Windows Server 2019)公开

    Oracle 12cR2 单实例文件系统在Windows Server 2019上的安装 在线查看