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 网络开发详解之远程文件包含漏洞
Apr 25 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
php app支付宝回调(异步通知)详解
Jul 25 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
PHP+redis实现微博的推模型案例分析
Jul 10 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
Oct 18 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
PHP 实现重载
Mar 09 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
PHP自定义函数收代码
2010/08/01 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
浅析Python中的for 循环
2016/06/09 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
比利时买床:Beter Bed
2017/12/06 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
吨的认识教学反思
2014/04/27 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python