• 自定义验证类

    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. python pandas(ix & iloc &loc)

    python pandas(ix & iloc &loc) loc——通过行标签索引行数据 iloc——通过行号索引行数据 ix——通过行标签或者行号索引行数据(基于loc和iloc ...

  2. js 里面call()的使用

    call 是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向.JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」 ...

  3. css的绝对布局问题,怎么让子元素置于底部?

    给子元素做定位.用position标签示例:<html><head><style type="text/css">p.pos_abs{posit ...

  4. MEF等Ioc框架引起内存泄露-PartCreationPolicy

    对象的创建可以使用new,也可以使用IOC架如:castle.MEF等,IOC创建的对象的生命周期,可能IOC负责管理,使用框架的开发者如果不弄清楚可能会造成内存泄露问题. 这些内存泄露问题并不是IO ...

  5. Oracle安装过程中Oracle Database Configuration Assistant失败问题解决

    今天在安装Oracle的过程中出现了oracle Database Configuration Assistant问题,我解决该问题的方法是将我的计算机用户名更改了一下,改成了pc1.之后再在orac ...

  6. Aes加密/解密示例项目

    #AesEncrypt:Aes加密/解密示例项目 <br> 附件中的“AesEncrypt.zip”是本项目的exe文件,可直接下载下来运行和查看. *高级加密标准(英语:Advanced ...

  7. JavaScript(2)——网页解析过程

    JavaScript 网页解析过程 前端编程工具:Visual Studio Code 快捷语法:Emmett语法 正题: 当我们在浏览器输入网址的时候,从服务器下载网页:这个文字经过HTML解析器的 ...

  8. 实验一part1.1 1.2

    #include<stdio.h> int main() { printf("201983270526\n"); printf("Hello Mars!&qu ...

  9. 【Java】递归删除目录以及文件

    public static void deleteDirectory(String path) { File pFile = new File(path); //若目录以及文件不存在,则终止继续执行方 ...

  10. Datafactory 实际使用案例

    Datafactory 实际使用案例 一.       简介 QuestDataFactory 是一种快速的.易于产生测试数据工具,它能建模复杂数据关系,且有带有GUI界面.DataFactory是一 ...