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 相关文章推荐
生成缩略图
Oct 09 PHP
用PHP读取IMAP邮件
Oct 09 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
解析php中获取系统信息的方法
Jun 25 PHP
linux系统下php安装mbstring扩展的二种方法
Jan 20 PHP
php算法实例分享
Jul 14 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
Nov 13 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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
ajax php 实现写入数据库
2009/09/02 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
js变量声明var使用与不使用的区别详解
2019/01/21 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
Python使用pymysql小技巧
2017/06/04 Python
Python中的函数作用域
2018/05/07 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
python实现tail -f 功能
2020/01/17 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
出纳岗位职责范本
2013/12/01 职场文书
上班迟到检讨书
2014/09/15 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
军人离婚协议书样本
2014/10/21 职场文书
遗嘱格式范本
2015/08/07 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
MySQL 条件查询的常用操作
2022/04/28 MySQL