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' => $ ...
随机推荐
- 淘宝可伸缩高性能互联网架构HSF(转)
文章转自http://blog.csdn.net/hpf911/article/details/14165865 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目 ...
- 【转】对random_state参数的理解
转自:https://blog.csdn.net/az9996/article/details/86616668 在学习机器学习的过程中,常常遇到random_state这个参数,下面来简单叙述一下它 ...
- Newtonsoft的序列化和反序列化
class test { public string a; public int b; public byte[] c; public In ...
- c# create html table test
string html = "<html><head><title>44444444</title>"; html += @&quo ...
- Google BreakPad使用集
Google Breakpad 学习笔记 - 简书 Qt中使用Google Breakpad捕获程序崩溃异常_Linux编程_Linux公社-Linux系统门户网站
- EXPERT FOR SQL SERVER诊断系列--索引
概述 索引设计是数据库设计中比较重要的一个环节,对数据库的性能起着至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其 ...
- Samba服务的配置总结
之前介绍了Linux下Samba服务器部署,这里简单总结下Samba服务参数的配置说明: Samba服务的主配置文件是smb.conf,默认在/etc/samba/目录下.smb.conf含有多个段, ...
- Nginx反向代理中使用proxy_redirect重定向url
在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置了.proxy_redirect功能比较强大,其作用是对 ...
- NSCache的简单使用
简介 1)NSCache 是苹果官方提供的缓存类,用法与 NSMutableDictionary 的用法很相似,在 AFNetworking 和 SDWebImage 中,使用它来管理缓存. 2)NS ...
- C. Rectangles
链接 [http://codeforces.com/group/1EzrFFyOc0/contest/1028/problem/C] 题意 给你n个矩形的左下角和右上角坐标,问你至少包含在n-1个矩形 ...