关于Yii中模型场景的一些简单介绍


Posted in PHP onSeptember 22, 2019

前言

在Yii中模型字段验证有一个场景的概念,可以在不同的场景下设置不同的验证规则,在Yii中的场景默认为default,简单实现如下

下面我以用户表,表中字段为user_name,password

简单规则如下

public function rules() {
 return [
 [['user_name', 'password'], 'required'],
 [['user_name', 'password'], 'string', 'max' => 255],
 ];
}

一:

如果我们需要在新增时验证user_name和password两个字段,在更新时只验证user_name字段

这时候我们可以在模型中覆盖yiibaseModel::scenarios()方法来自定义行为

public function scenarios()
{
 return [
 'create' => ['user_name', 'password'],//create表示新增场景
 'update' => ['user_name'],//update表示更新场景
 ];
}

根据上面设置的场景规则,我们只需要在我们新增和更新时设置为指定的场景即可

// 场景作为属性来设置
$model = new User;
$model->scenario = 'create';
// 场景通过构造初始化配置来设置
$model = new User(['scenario' => 'create']);

根据如上就可以实现在不同的场景下验证指定的字段

二:

我们可以在规则rule中使用on属性来设置不同的场景

public function rules() 
{
 return [
 [['id'], 'integer'],
 [['user_name'], 'required'],
 [['password'], 'required', 'on' => 'create']
 [['user_name', 'password'], 'string', 'max' => 255],
 ];
}

根据如上在create场景下password字段必填

三:

使用yiibaseModel::validate() 来验证接收到的数据

$model = new User();
$model->validate(['user_name'])

使用validate方法验证user_name,验证通过返回true,否则返回false

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 PHP
PHP+jQuery实现自动补全功能源码
May 15 PHP
CodeIgniter图像处理类的深入解析
Jun 17 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
php简单实现MVC
Feb 05 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
PHP7匿名类的用法示例
Apr 05 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
php定期拉取数据对比方法实例
Sep 22 #PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 #PHP
php设计模式之单例模式用法经典示例分析
Sep 20 #PHP
php数组和链表的区别总结
Sep 20 #PHP
php输出反斜杠的实例方法
Sep 19 #PHP
php实现session共享的实例方法
Sep 19 #PHP
php进行md5加密简单实例方法
Sep 19 #PHP
You might like
PHP文件上传实例详解!!!
2007/01/02 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
jquery获取input的value问题说明
2010/08/19 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
Javascript中的delete介绍
2012/09/02 Javascript
js变换显示图片的实例
2013/04/16 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
script标签属性用type还是language
2015/01/21 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
详解jQuery-each()方法
2019/03/13 jQuery
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
Python验证码识别的方法
2015/07/10 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
python判断数字是否是超级素数幂
2018/09/27 Python
解析Python的缩进规则的使用
2019/01/16 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
TCP/IP的分层模型
2013/10/27 面试题
单位委托书
2014/10/15 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python