• 自定义验证类

    class BaseModel extends Model {
    public function rules() {
    return [
    ['obj', ContentSecurityValidator::class],
    ];
    }
    public function exec() {
    if (!$this->validate()) {
    return [
    'errors' => $this->errors
    ];
    }
    }
    public function attributeLabels() {
    return [
    'obj' => '标签',
    ];
    }
    } /**
    * 自定义验证类
    */
    class BaseValidator extends Validator { /**
    * 必须要实现该方法
    * @param \yii\base\Model $model
    * @param string $attribute 参数名
    * @return bool
    */
    public function validateAttribute($model, $attribute) {
    $attributeValue = $model->$attribute;//获取$model里面的参数的值
    $attributes = $model->attributes;//获取model里面的参数数组
    $attributeLabels = $model->attributeLabels();//获取model里面的已经设置好参数对应标签 }
    }
  • 自定义验证方法
    class BaseModel extends Model {
    public function rules() {
    return [
    ['obj', 'validate'],
    ];
    }
    public function exec() {
    if (!$this->validate()) {
    return [
    'errors' => $this->errors
    ];
    }
    }
    public function attributeLabels() {
    return [
    'obj' => '标签',
    ];
    }
    /**
    * 自定义方法
    */
    public function validate($attribute) {
    $attributeValue = $this->$attribute;//获取$model里面的参数的值
    $attributes = $this->attributes;//获取model里面的参数数组
    $attributeLabels = $this->attributeLabels();//获取model里面的已经设置好参数对应标签 }
    }
  • 不刷新,通过切换select的按钮,面对不同场景时,设置某些必填项
    public function rules() {
    return [
    [['email', 'phone'], "requiredValidators", 'skipOnEmpty' => false, 'skipOnError' => false],
    ];
    } public function requiredValidators($attribute) {
    if ($this->typeId == 'register') {
    $isAttrEmpty = !$this->$attribute || empty($this->$attribute) || $this->$attribute === '' || $this->$attribute == null;
    if ($isAttrEmpty)
    $this->addError($attribute, $this->attributeLabels()[$attribute] . '不能为空');
    }
    } public function attributeLabels() {
    return [
    'email'=>'邮箱',
    'phone'=>'手机'
    ]
    }

yii自定义验证的更多相关文章

  1. Yii自定义验证规则

    简单的方法:在 model 内部定义规则 最简单的定义验证规则的方法是在使用它的模型(model)内部定义. 比方说,你要检查用户的密码是否足够安全. 通常情况下你会使用 CRegularExpres ...

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

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

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

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

  4. 9、 Struts2验证(声明式验证、自定义验证器)

    1. 什么是Struts2 验证器 一个健壮的 web 应用程序必须确保用户输入是合法.有效的. Struts2 的输入验证 基于 XWork Validation Framework 的声明式验证: ...

  5. 重写ValidateEntity虚方法实现可控的上下文验证和自定义验证

    上篇文章介绍了ValidationAttribute和IValidatableObject.Validate验证,但是这种验证还是稍微简单了,对于复杂的实体,例如:继承过来的实体.实现某接口的实体等等 ...

  6. jq.validate 自定义验证两个日期

    jq.validate 自定义验证两个日期 首先定义有一个表单,date1和date2是属于表单的元素,若date1大于date2,返回false:若date1<date2,返回true.使用j ...

  7. ASP.NET MVC自定义验证Authorize Attribute

    前几天Insus.NET有在数据库实现过对某一字段进行加密码与解密<使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和 ...

  8. 关于AngularJs,数据绑定与自定义验证

    最近开始着手学起了Angular,抱着好奇的心情开始研究了起来.忽然发现angular可以巧妙而方便的进行数据的绑定验证啊什么的.(当然,我只是刚开始学,所有可能有更强大的功能,只是我还没有看到) 那 ...

  9. validate插件深入学习-04自定义验证方法

    自定义验证方法 jQuery.validator.addMethod(name,method,[,message]) name: 方法名 method: function(value,element, ...

随机推荐

  1. smarty中ifelse、foreach以及获取数组中键值名的一个实例

    <{if empty($history)}> <tr> <td colspan="6">Not any records!</td> ...

  2. Docker关键概念阐述

    要了解Docker需要对其体系结构中的几个关键概念有所了解,主要包括image.container.service.swarm.stack等. 在介绍这几个概念时,会使用到一个测试环境,这个测试环境是 ...

  3. [学习笔记] L1-PCA

    L1-PCA Intro PCA的本质就是从高维空间向低维空间投影,投影的本质又是左乘(或右乘)一个向量(表征原来特征空间到投影后特征空间的权重),经过线性加权,转换到低维空间表征,如果将向量换成矩阵 ...

  4. vue路由嵌套,对应展示的视图

  5. Linux的组成

    1.内核:是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序. 2.Shell:是系统的用户界面,提供了用户和内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行,是一个 ...

  6. Appium+python自动化2-环境搭建

    一.必备软件安装 小编的环境是Windows 7版本 64位系统(32位的同学自己想办法哦) 1.jdk1.6.0 (64位) 2.android-sdk_r24.3.4-windows 3.pyth ...

  7. 数据库高级数据库学习--上机练习7(Transact-SQL 函数定义和调用)

    上机练习7 在Transact SQL中,有一类特殊的自定义函数,其返回值为一张表,该类自定义函数被称作内嵌(联)表值函数,其基本语句格式如下: CREATE FUNCTION函数名称[( {@参数名 ...

  8. delphi中and和or的特殊用法

    1=1 10=2 100=4 1000=8 1 or 2 = 3(11); 1 and 3 = 1; 2 and 3 = 2; 2 or 4 = 6(110); 2 and 6 = 2; 4 and ...

  9. golang(11) 反射用法详解

    原文链接:http://www.limerence2017.com/2019/10/14/golang16/ 反射是什么 反射其实就是通过变量动态获取其值和类型的一种技术,有些语言是支持反射的比如py ...

  10. redis的坑

    1.外网无法连接redis 解决方法: 把redis.conf里的bind 127.0.0.1注释掉,不行的话把127.0.0.1修改成0.0.0.0 2.make的时候显示没有gcc 解决方法: 安 ...