YII2十三大特性2
第十三
场景(scenario)的使用
例如:有三个场景,分别为创建,更新,确认回款
首先,定义所有的场景,及规则,如下所示:
<?php namespace core\models; use common\models\Base; use Yii; use yii\base\Exception; class WmsSamplingApplication extends \common\models\WmsSamplingApplication { const TYPE_HERB = 1; const TYPE_PRODUCT = 2; const CHECK_STATUS_INIT = 0; const CHECK_STATUS_OK = 1; const CHECK_STATUS_DENY = 2; public $disabled = false; public function scenarios() { $scenario = parent::scenarios(); $scenario['scenario_create'] = [ 'wms_sampling_application_code', 'common_producer_info_id', 'wms_sampling_application_type', 'wms_sampling_application_category', 'wms_sampling_application_user_id', 'wms_sampling_application_apply_at', 'wms_sampling_application_apply_text' ]; $scenario['scenario_update']=[ 'wms_sampling_application_code', 'common_producer_info_id', 'wms_sampling_application_type', 'wms_sampling_application_category', 'wms_sampling_application_user_id', 'wms_sampling_application_apply_at', 'wms_sampling_application_apply_text' ]; $scenario['scenario_cash']=[ 'wms_sampling_application_cash_user_id', 'wms_sampling_application_cash_at', 'wms_sampling_application_cash_text', 'wms_sampling_application_cash_status' ]; return $scenario; } public function rules() { return [ [['wms_sampling_application_code'], 'required', 'message'=>'必填字段', 'on'=>['scenario_create', 'scenario_update']], [['common_producer_info_id'], 'required', 'message'=>'必填字段', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_type'], 'required', 'message'=>'必填字段', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_category'], 'required', 'message'=>'必填字段', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_user_id'], 'required', 'message'=>'必填字段', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_apply_at'], 'required', 'message'=>'必填字段', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_apply_text'], 'required', 'message'=>'必填字段', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_cash_user_id'], 'required', 'message'=>'必填字段', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_at'], 'required', 'message'=>'必填字段', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_text'], 'required', 'message'=>'必填字段', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_status'], 'required', 'message'=>'必填字段', 'on'=>['scenario_cash']], [['wms_sampling_application_code'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_type'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['common_producer_info_id'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['common_producer_info_name'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_user_id'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_user_name'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_user_phone'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_apply_at'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_apply_text'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_check_user_id'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_check_user_name'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_check_user_phone'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_check_at'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_check_status'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_check_text'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['created_at'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['updated_at'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['is_del'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_related_id'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_related_sheet_number'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_category'], 'integer', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_category_name'], 'string', 'on'=>['scenario_create', 'scenario_update']], [['wms_sampling_application_cash_balance'], 'string', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_user_id'], 'integer', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_user_name'], 'string', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_at'], 'string', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_text'], 'string', 'on'=>['scenario_cash']], [['wms_sampling_application_cash_status'], 'integer', 'on'=>['scenario_cash']], ]; }
最后,使用场景 ,如下图所示:
public function actionCash($id) { $model = $this->findModel($id); $model->setScenario('scenario_cash'); if ($model->load(Yii::$app->request->post())) { $userModel = \core\models\User::getUser(\Yii::$app->user->id); $model->wms_sampling_application_cash_user_name = $userModel->name; $model->wms_sampling_application_cash_at = strval(strtotime($model->wms_sampling_application_cash_at)); $model->wms_sampling_application_cash_status = 1; $model->save(false); return $this->redirect(['index']); } else { $model->wms_sampling_application_cash_user_id = \Yii::$app->user->id; $model->wms_sampling_application_cash_at = time(); return $this->renderAjax('cash', [ 'model' => $model, ]); } }
YII2十三大特性2的更多相关文章
- YII2十三大特性
第一(框架&项目) 1. 框架安装 2. 框架扩展安装 3. 项目初始化-->php yii init 4. 美化URL配置 'urlManager' => [ 'enablePr ...
- 如何使用yii2的缓存依赖特性
目录 如何使用yii2的缓存依赖特性 概述 页面缓存 缓存依赖 链式依赖 总结 如何使用yii2的缓存依赖特性 概述 缓存是Yii2的强大特性之一,合理使用缓存技术可以有效地减小服务器的访问压力.Yi ...
- Yii2版本号新特性简单介绍
Yii2 Beta版本号在今年4月份公布.眼下正在改动问题和完好文档中. Yii2要求PHP版本号不低于5.4,主要有例如以下改进: 1)支持PHP框架间协作组制定的PSR-4标准,这简化了文件夹并提 ...
- yii2实战教程之新手入门指南-简单博客管理系统
作者:白狼 出处:http://www.manks.top/document/easy_blog_manage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文 ...
- yii2使用相关记录
#Yii::$app->user 是指yii\web\User这个类 #yii2在命令行下执行 D: cd D:\wnmp\php5 php D:\wnmp\www\yii2\yii test/ ...
- PHP的学习--Traits新特性
在阅读yii2源码的时候接触到了trait,就学习了一下,写下博客记录一下. 自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits. Traits 是一种为类似 PHP 的 ...
- Yii2初谈
Yii2发布有两个月时间了,一直没有去仔细关注过. 今天在回顾PSR标准时,稍稍扫了一眼Yii2.它的命名风格还是一如既往的与Zend那种既首字母大写又还要下划线连接的很二的命名风格格格不入.其实我看 ...
- yii2高级应用
public function searchWithRelated() { $criteria = new CDbCriteria; $criteria->together = ...
- Yii2 GridView自定义链接之重写 ActionColumn
最近刚开始用yii2,真是超棒的,但是也有许多不足的地方,今天要说的就是GridView链接问题. <?= GridView::widget([ 'dataProvider' => $ ...
随机推荐
- unhandled exception(没有处理异常)
背景 今天在代码中抛出了Exception类, 但是出现了代码报错 意思是,未处理异常 原因 因为Exception是check异常,也就是必须在代码层面直接捕获处理的,这类异常有IOExceptio ...
- 最小生成树(图论)--3366lg【模版】
题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz 输入输出格式 输入格式: 第一行包含两个整数N.M,表示该图共有N个结点和M条无向边.(N<=5000,M<= ...
- 你所不了解的javascript操作DOM的细节知识点(一)
你所不了解的javascript操作DOM的细节知识点(一) 一:Node类型 DOM1级定义了一个Node接口,该接口是由DOM中的所有节点类型实现.每个节点都有一个nodeType属性,用于表明节 ...
- Hyper-V 安装系统
注: 如屏幕前的您没有一定的网络知识(可能会使你的网络造成错乱),请勿按该文档操作. // 注:如果开启了Hyper-V,再使用VMware时在VMware上会报错,需把这里关闭后重启实体机后再开启V ...
- 【数据库摘要】10_Sql_Create_Index
CREATE INDEX 语句 CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下.索引使数据库应用程序能够更快地查找数据. 索引 您能够在表中创建索引,以便更加高速高效地查询 ...
- NOI.ac #8 小w、小j和小z LIS
传送门 题意:在一个数轴上,给出$N$个人的初始位置与速度(速度有方向),求最大的时间使得存在$N-K$个人在这一段时间内两两没有相遇.$1 \leq K \leq N \leq 10^5$ 显然有二 ...
- [转]curl的错误代码
转贴者按: 今天在使用curl的时候碰到了一个错误,如下所示: External Program Failed: D:\Tools\curl\curl.exe (return code was 18) ...
- MySQL调优基础, 与hikari数据库连接池配合
1.根据硬件配置系统参数 wait_timeout 非交互连接的最大存活时间, 10-30min max_connections 全局最大连接数 默认100 根据情况调整 back_log ...
- item 2: 理解auto类型的推导
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你已经读过item 1的模板类型推导,你已经知道大部分关于au ...
- (代码篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
上一篇讲解了基础文件IO的理论发展,这里结合java看看各项理论的具体实现. 传统IO-intsmaze 传统文件IO操作的基础代码如下: FileInputStream in = new FileI ...