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将任何格式视频转为flv的代码
Sep 03 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
PHP __autoload函数(自动载入类文件)的使用方法
Feb 04 PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
解析php中die(),exit(),return的区别
Jun 20 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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
支持php4、php5的mysql数据库操作类
2008/01/10 PHP
php header功能的使用
2013/10/28 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
Python函数参数分类原理详解
2020/05/28 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
自强之星事迹材料
2014/05/12 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技