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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
table标签的结构与合并单元格的实现方法
Jul 24 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
完美的php分页类
Oct 24 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
PHP中多字节字符串操作实例详解
Aug 23 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
简单采集了yahoo的一些数据
2007/02/14 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP进程同步代码实例
2015/02/12 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
自己实现ajax封装示例分享
2014/04/01 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python Tkinter实现简易计算器功能
2018/01/30 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python中按值来获取指定的键
2019/03/04 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python系列 文件操作的代码
2019/10/06 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
小学生学雷锋演讲稿
2014/04/25 职场文书
公路绿化方案
2014/05/12 职场文书
先进员工获奖感言
2014/08/14 职场文书
法人代表证明书格式
2014/10/01 职场文书
2015年计划生育责任书
2015/05/08 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python