• 自定义验证类

    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. HearthBuddy卡牌无法识别

    界面上无法识别,提示是 [Unidentified card ID :DAL_010][Unidentified card ID :DAL_415] Unidentified card ID :HER ...

  2. EBS GL 日记账行“账户说明”段说明显示不全

    问题描述: 路径:总帐管理超级用户/日记帐/输入 如下图所示,日记账行的“账户说明字段”段值说明显示不全 解决方法: 路径:总帐管理超级用户/设置/财务系统/弹性域/关键字/段 如下图所示,找到相应的 ...

  3. [Tool]截屏利器FSCapture7.6下载

    下载地址:https://pan.baidu.com/s/1XQ1P5hHwZd0NE7bdz_znQQ 或是:https://files.cnblogs.com/files/xiandedanten ...

  4. jsp页面中使用javabean

    <%@ page language="java" import="java.util.*,com.loaderman.demo.b_cases.*" pa ...

  5. OOP、DI、IOC的关系

    此随笔的重点在“Demo分析”一章,以代码的分阶段变化讲述了DI,DIP,IOC的演变,写在前面文字均为铺垫. 希望各位园友拍砖,促使流浪者的进步,现在有很多问题想讨论,即以此文寻找志同道合的园友,另 ...

  6. GPU编程shader之正余弦波和幂/指数函数

    先上一个demo代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  7. Day01:文件操作(File、RandomAccessFile)

    文件操作 JAVA中的 File 类是文件和目录路径名的抽象形式.使用 File 类可以获取文件本身的一些信息,例如文件所在的目录.文件长度.文件读写权限等. 在 Java 中,File 类是 jav ...

  8. python定位隐藏元素

    定位隐藏要素的原理: 页面主要通过“display:none”来控制元素不可见.所以我们需要通过javaScript修改display的值得值为display="block,来实现元素定位的 ...

  9. 配置文件 "G:\虚拟机列表\Linux001.vmx" 由产品 VMware 创建, 其版本 VMware Workstation 不兼容并且不能使用.

    解析: 报这种错误一般是虚拟机文件里声明的VMware版本和真实的VMware版本不一致导致.我们可以手动更改真实VMware版本,或者更改虚拟机文件里声明的VMware版本.以下我们通过更该虚拟机文 ...

  10. Python:Django 项目中可用的各种装备和辅助

    1 Redis 数据库 2 MySQL 数据库 3 前端服务器 live-server 4 定时任务 django-crontab扩展 5 Docker 容器 --用来运行 FastDFS 分布式文件 ...