Yii 2.0中场景的使用教程


Posted in PHP onJune 02, 2017

前言

熟悉Yii框架的人都知道,灵活的使用场景可以达到事半功倍的效果!

比如普通的数据的新增、修改,新增需要验证其中两个字段,而修改只需要验证其中一个字段;还有种情况,也是我们现在用到的,同一张表(同一个model)有可能在不同的项目分支中使用,但是不用的项目分支对成员变量的验证是不一样的,这时使用场景就可以轻松搞定;

场景使用

1、Yii2中简单的场景使用在这里有说明: https://3water.com/article/115231.htm

2、但是对于初学者可能还是不能灵活的应用:

public function rules()
 {
 return [
  [['name', 'account', 'pwd'], 'string', 'max' => 11],
  ['account','required','message'=>'用户名不能为空'],
  ['pwd','required','message'=>'密码不能为空','on'=>'add_customer']
 ];
 }

对于rules中指定部分成员变量的验证规则以及所属场景,还是推荐上面这种写法,当然也可以直接在类里面定义一个方法名为scenarios的方法;

如何使用:

1、如果需要new一个新的对象就使用某个场景,直接采用:

$bus_department = new BusDepartment(['scenario' => 'add_customer']);

2、更新数据的时候经常会用到这种:

$bus_department = BusDepartment::findOne($id);

使用场景的方法是:

$bus_department->setScenario('add_customer'); 或者 $bus_department->scenario = 'add_customer';

这样,在操作当前对象的时候就会按照所设定的场景进行规则验证。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
IIS安装Apache伪静态插件的具体操作图文
Jul 01 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
Feb 09 PHP
PHP中类的自动加载的方法
Mar 17 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
浅谈laravel-admin的sortable和orderby使用问题
Oct 03 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
Oct 16 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 #PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 #PHP
php从数据库中读取特定的行(实例)
Jun 02 #PHP
php获取数据库结果集方法(推荐)
Jun 01 #PHP
php获取数据库中数据的实现方法
Jun 01 #PHP
PHP用户注册邮件激活账户的实现代码
May 31 #PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 #PHP
You might like
dedecms中常见问题修改方法总结
2007/03/21 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
checkbox使用示例
2013/08/23 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
Javascript实现字数统计
2015/07/03 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
Python中的迭代器漫谈
2015/02/03 Python
python中引用与复制用法实例分析
2015/06/04 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
三年级学生评语
2014/04/23 职场文书
委托书的写法
2014/08/30 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
杭白菊导游词
2015/02/10 职场文书
表扬信范文
2019/04/22 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android