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


Posted in PHP onApril 19, 2016

yii2的一个强大之处之一就是他的Form组件,既方便又安全。有些小伙伴感觉用yii一段时间了,好嘛,除了比tp"难懂"好像啥都没有。

领导安排搞一个注册的功能,这家伙刷刷刷的又是百度啥啥啥好的表单样式,又是百度啥啥啥validate验证,真替这家伙捏把汗。

当然啦,废话说在前头,咱们的重点喃,是要利用ActiveForm,然后怎么去实现自定义验证规则。

先来说说场景:

条件:①、有两个字段分别是A和B ②、A有两个值分别是1和2

需求是:当用户选择的A的值等于1的时候,B的值必须填写,当A的值等于2的时候,B的值不写也没关系。其中A必选。

我们来看看用Yii2自带的rules怎么去实现

首先在其关联model上加上下面这句规则

/**
* @inheritdoc
*/
public function rules()
{
return [
[['B'], 'requiredByASpecial'],
];
}

然后在该model里面去实现requiredByASpecial方法即可

/**
* 自定义验证B
*/
public function requiredByASpecial($attribute, $params)
{
if ($this->A== 1) 
{
if ($this->B=== '')
$this->addError($attribute, "B的值不可以为空.");
}
}

上面的意思就是说当A等于1且B的值为空时,返回错误信息"B的值不可以为空"。

以上只是举了一个简单的例子,可以根据具体需求应用。

以上所述是小编给大家介绍的yii2 rules 验证规则的全部内容,希望对大家有所帮助!

PHP 相关文章推荐
PHP的FTP学习(二)
Oct 09 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
Jul 22 PHP
YII中assets的使用示例
Jul 31 PHP
PHP date函数常用时间处理方法
May 11 PHP
Zend Framework入门教程之Zend_Mail用法示例
Dec 08 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
PHP序列化/对象注入漏洞分析
Apr 18 #PHP
php实现三级级联下拉框
Apr 17 #PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 #PHP
orm获取关联表里的属性值
Apr 17 #PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
Apr 15 #PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 #PHP
PHP6连接SQLServer2005的三部曲
Apr 15 #PHP
You might like
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
div移动 输入框不能输入的问题
2009/11/19 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
jQuery选择器源码解读(二):select方法
2015/03/31 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
Bootstrap select下拉联动(jQuery cxselect)
2017/01/04 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
Python脚本获取操作系统版本信息
2016/12/17 Python
Django REST framework 视图和路由详解
2019/07/19 Python
将python安装信息加入注册表的示例
2019/11/20 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
final, finally, finalize的区别
2012/03/01 面试题
Java模拟试题
2014/11/10 面试题
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
日化店促销方案
2014/03/26 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
Go 语言下基于Redis分布式锁的实现方式
2021/06/28 Golang
docker 制作mysql镜像并自动安装
2022/05/20 Servers