Yii 2.0中场景的使用教程

前言

熟悉Yii框架的人都知道,灵活的使用场景可以达到事半功倍的效果!

比如普通的数据的新增、修改,新增需要验证其中两个字段,而修改只需要验证其中一个字段;还有种情况,也是我们现在用到的,同一张表(同一个model)有可能在不同的项目分支中使用,但是不用的项目分支对成员变量的验证是不一样的,这时使用场景就可以轻松搞定;

场景使用

1、Yii2中简单的场景使用在这里有说明: http://www.jb51.net/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';

这样,在操作当前对象的时候就会按照所设定的场景进行规则验证。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Yii2中简单的场景使用介绍

    本文主要介绍的是关于Yii2简单场景使用的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 直接上代码(主要部分): 模型层: public function rules() { return [ [['name', 'account', 'pwd'], 'string', 'max' => 11], ['account','required','message'=>'用户名不能为空'], ['pwd','required','message'=>'密码不能为空','on'=

  • Yii 2.0中场景的使用教程

    前言 熟悉Yii框架的人都知道,灵活的使用场景可以达到事半功倍的效果! 比如普通的数据的新增.修改,新增需要验证其中两个字段,而修改只需要验证其中一个字段:还有种情况,也是我们现在用到的,同一张表(同一个model)有可能在不同的项目分支中使用,但是不用的项目分支对成员变量的验证是不一样的,这时使用场景就可以轻松搞定: 场景使用 1.Yii2中简单的场景使用在这里有说明: http://www.jb51.net/article/115231.htm 2.但是对于初学者可能还是不能灵活的应用: p

  • Yii 2.0在Grid中格式化时间方法示例

    本文主要给大家介绍了关于Yii 2.0在Grid中格式化时间的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 直接上代码 <?= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'id', 'username', 'email:email', 'created_at:date', // 这两个需要显示为 2016

  • 建立WEB两大经典!《VML极道教程》+FlashVml(闪耀之星)3.0中/英文版联合发布!

    该贴的内容,请务必字句阅读,因为这是免费赠送给所有WEBIT人的一个技术大蛋糕! 注释:以下所有的URL演示地址,因人流问题会较慢,其加载时请耐心等待,并尝试使用不同地址分流. <VML极道教程>简介: 以学图用为目标追求.以效求速为极道教程.目前一本相当完整的中文(VML教程+参考手册)合本.此书将使你彻底的精通VML标记.熟悉DVML编程.进而转战WEB实际开发.无论你是笨人.常人.聪明人.IT精英,只要你肯学,熟读本书你就能彻彻底底的精通VML.你或可纯手写代码,实现简单的VML应用.你

  • 在Centos 8.0中安装Redis服务器的教程详解

    目录 1.官网下载Linux版安装包 2.使用XShell 和Xftp连接Centos: 3.默认下,redis相关的安装文件会存储在/usr/local/bin 这个目录下 4.前台启动redis服务器 5.后台启动Redis服务器(推荐) 5.1  把redis.conf 文件复制一份 5.2 修改配置文件参数: 5.3 回到redis-server 所在目录: 企业级开发中,经常需要把一些中间件安装在Linux服务上.主要考虑到linux服务器的性能吧. 1.官网下载Linux版安装包 R

  • yii2.0框架场景的简单使用示例

    本文实例讲述了yii2.0框架场景的简单使用.分享给大家供大家参考,具体如下: 一.规则中使用场景 规则场景的使用 模型层 public function rules() { return [ [['name','product_id'],'required','on'=>'add], ]; } 表示只在add场景下改规则才生效. 在控制器中指定场景: $model->scenario = "add"; 或者 $model = new User(['scenario' =&

  • CentOS7.3中Docker的安装教程

    一.简介 Docker 是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低. 本教程适合阅读人员:运维工程师.后端开发人员,通过本教程可以一步一步了解Docker的使用. 二.Docker的应用场景 1. Web 应用的自动化

  • vue中的inject学习教程

    最近看源码有一段对于整合参数的代码, normalizeProps(child, vm) normalizeInject(child, vm) normalizeDirectives(child) 想象里边的Inject很少用到,所以查了一下资料, 通常组件传参是有两种情况 父子组件进行传参,这时候通常利用props 非父子组件传参,这时候一般利用vuex 会有一种情况隔代组件传参,这时候可以利用props一层一层传递下去,但是代码就比较乱了 所以就有了 provide/inject 进行隔代组

  • vue cli 3.0 搭建项目的图文教程

    1.3.0版本包括了默认预设配置和用户自定义设置 2.对比2.0来看3.0的目录结构更加精简了 移除了配置文件目录 (config 和 build文件夹) 移除了 static 文件夹,新增 public 文件夹,并且 index.html 移动到 public 中 在 src 文件夹中新增了 views 文件夹,用于分类视图组件和公共组件 vue-cli 3.0 搭建 1. 安装或升级 Node.js vue-cli官网对于node版本有明确要求 Vue CLI 需要 Node.js 8.9

  • Yii Framework框架中事件和行为的区别及应用实例分析

    本文实例讲述了Yii Framework框架中事件和行为的区别及应用.分享给大家供大家参考,具体如下: 个人觉得,在 Yii 里面,最难以明白的就是事件(Event)和行为(behavior)了.这不仅仅是因为它们的概念 比较难明,关键是它们的应用场景比较难明,不知道什么时候应该使用事件和行为来开发. 关于 Yii 的事件和行为的描述,可参考 http://www.yiiframework.com/doc/api/1.1/CComponent 本文参考的文章: http://www.larryu

  • 再谈Yii Framework框架中的事件event原理与应用

    本文实例讲述了Yii Framework框架中的事件event原理与应用.分享给大家供大家参考,具体如下: 再谈Yii Framework中的事件event,我写过的关于Yii事件event的另一篇文章 Yii Framework 中事件和行为的区别和应用 https://www.jb51.net/article/184208.htm 假设有类MyComponent,它是继承于CComponent,通过查看 CComponent 的 __set() 方法, public function __s

随机推荐