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' => $ ...
随机推荐
- KKT(Karush-Kuhn-Tucher)条件
在优化理论中,KKT条件是非线性规划(nonlinear programming)最佳解的必要条件.KKT条件将lagrange乘数法(Lagrange multipliers)中的等式约束优化问题推 ...
- NodeJS之path模块
NodeJS之path模块 常用的主要有如下工具函数: 1. path.basename(path[, ext]) 2. path.extname(path) 3. path.dirname(path ...
- 如何用css实现"等高布局"。
有时候为了让网页实现美观,在不知道高度的情况下,我们要用css实现等高布局效果,传统的方法, 我们可以用javascript实现,但是由于需求决定或者其他的情况下,我们只能用css实现,其方法主要是采 ...
- JVM实践
package com.lsw.classloader; import java.io.FileInputStream;import java.lang.reflect.Field;import ja ...
- BMP280 driver对接单片机I2C或者SPI总线接口
1:登录github网站搜BMP280,找到 BoschSensortec/BMP280_driver 2:gitclone或者download zip都可以,把驱动下载到本地,记得fork哦! 3: ...
- Qt 中一些常用类中文说明
Qt 中一些常用类中文说明是本文讲述的内容,这篇文章主要是介绍Qt 当中经常使用的类,采取的是使用字母索引的方式,下面的类是被经常使用的. QDataStream 为QIODevice提供了一串的二进 ...
- 高显卡安装 低版本的ubuntu系统导致hdmi线不能用
- 学习CSS布局 - box-sizing
box-sizing 人们慢慢的意识到传统的盒子模型不直接,所以他们新增了一个叫做 box-sizing 的CSS属性. 当你设置一个元素为 box-sizing: border-box; 时,此元素 ...
- 【转】Java生成图片验证码
原文转自:http://blog.csdn.net/ruixue0117/article/details/22829557 看了挺多图片验证码的代码,感觉没什么长的好看点的,就自己动手写了个,写完发现 ...
- python 3.5下安装pycrypto
pip install --use-wheel --no-index --find-links=https://github.com/sfbahr/PyCrypto-Wheels/raw/master ...