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 相关文章推荐
在线增减.htpasswd内的用户
Oct 09 PHP
PHP SQLite类
May 07 PHP
php 函数使用方法与函数定义方法
May 09 PHP
PHP网站备份程序代码分享
Jun 10 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
Jun 16 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
Aug 05 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
CI框架常用方法小结
May 17 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 PHP
CentOS7编译安装php7.1的教程详解
Apr 18 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
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
2007/03/15 PHP
PHP安全配置详细说明
2011/09/26 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
Python定义一个Actor任务
2020/07/29 Python
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
台湾良兴购物网:EcLife
2019/12/01 全球购物
Herschel美国官网:背包、手提袋及配件
2020/03/10 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
《纸船和风筝》教学反思
2014/02/15 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
一文搞懂MySQL索引页结构
2022/02/28 MySQL
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers