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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
php提高网站效率的技巧
Sep 29 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 PHP
swoole锁的机制代码实例讲解
Mar 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
动态添加js事件实现代码
2009/03/12 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
函数式 JavaScript(一)简介
2014/07/07 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
Python实现从订阅源下载图片的方法
2015/03/11 Python
在Python中定义和使用抽象类的方法
2016/06/30 Python
Python探索之pLSA实现代码
2017/10/25 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
违纪学生保证书
2015/02/27 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
教你怎么用Python生成九宫格照片
2021/05/20 Python
Java设计模式之代理模式
2022/04/22 Java/Android