博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yii2中的场景使用
阅读量:6268 次
发布时间:2019-06-22

本文共 1023 字,大约阅读时间需要 3 分钟。

下面给大家介绍一下 yii2.0 场景的使用。小伙多唠叨一下了,就是担心有的人还不知道,举个简单的例子,现在在 post表里面有 title image content 三个的字段,当我创建一个 post 的时候,我想三个字段全部是必填项,但是你修改的时候,title content 两个字段是必填的, iamge 可以不填写。正常的情况下, [['title', 'content', 'image'], 'required',], 但是我们更改的时候 只需要 [['title', 'content'], 'required'], 就可以了,但是少了 image 字段 我们的表单就无法提交,这种问题怎么办啊?? 场景可以帮你解决这种问题,下面是一个简单的场景实例。

1、首先我们在 model 里面定义一下场景 类名必须是 scenarios()

public function scenarios(){    return [        'create' => ['title', 'image', 'content'],        'update' => ['title', 'content'],    ];}

 

2、好的,如上所示,场景的基本设置我们就已经完成一部分了,下面我们设置 rules() ,调用场景我们用 on 关键字

[['title', 'content'], 'required', 'on' => ['create', 'update']],[['image'], 'required', 'on' => 'create'],[['image'], 'image', 'enableClientValidation' => true,   'maxSize' => 1024, 'message' => '您上传的文件过大', 'on' => ['create']],

 

on 指定的就是场景,一个场景用字符串,多个场景用数组

3、好的,model 里面我们就设置完毕了 现在开始调用吧。 Controller 里面

$model = $this->findModel($id);$model->setScenario('update'); or $model->scenario = 'update';

 

转载于:https://www.cnblogs.com/ccs-mxs/p/9525993.html

你可能感兴趣的文章
看看国外的javascript题目,你能全部做对吗?
查看>>
ffmpeg 如何选择具有相同AVCodecID的编解码器 (AVCodec)
查看>>
真正解决 Windows 中 Chromium “缺少 Google API 密钥” 的问题
查看>>
Spring 之 AOP
查看>>
软件项目管理|期末复习(二)
查看>>
直接调用VS.net2005中的配置界面
查看>>
程序员的自我修养五Windows PE/COFF
查看>>
关于字符集,编码格式,大小端的简单总结
查看>>
js string 转 int Number()
查看>>
课堂练习:ex 4-20
查看>>
20155328 2016-2017-2 《Java程序设计》 第8周学习总结
查看>>
python操作redis--string
查看>>
echarts图表初始大小问题及echarts随窗口变化自适应
查看>>
Inherits、CodeFile、CodeBehind的区别
查看>>
创建一个SimpleDlg
查看>>
使用XML生成菜单
查看>>
udp,tcp对于socket的写法
查看>>
第二周个人赛
查看>>
推断Windows版本号新方法
查看>>
2017-4-18 ADO.NET
查看>>