美文网首页
YII2 场景运用 demo

YII2 场景运用 demo

作者: 阿_莫西林 | 来源:发表于2020-04-30 17:29 被阅读0次

一、在model中声明场景

如果要定义 方法名必须是 scenarios()
如果不定义 scenarios(),只在controller里注明 场景值的话,会把未加场景的rule和对应场景的一同验证。
如果在controller里也未注明 场景值的话,rules中绑定场景的字段则不验证,只验证通用字段。

create 场景包含'amount', 'years', 'type', 'handlerName', 'departmentID', 'feeID', 'purpose',

update 场景 对'amount', 'years', 不做要求。就需要单独对 create 场景中 'amount', 'years'进行配置规则。

public function scenarios()
{
    return [
        'create' => ['amount', 'years', 'type', 'handlerName', 'departmentID', 'feeID', 'purpose'],
        'update' => ['type', 'handlerName', 'departmentID', 'feeID', 'purpose'],
    ];
 
}
 
 
//参考网上更优做法
public function scenarios()
{
    //合并了父类scenarios方法的default场景,避免了设置场景后没有设置场景(没有设置场景是default场景)的模型rules验证问题
    return array_merge(parent::scenarios(), [
        'create' => ['amount', 'years', 'type', 'handlerName', 'departmentID', 'feeID', 'purpose'],
        'update' => ['type', 'handlerName', 'departmentID', 'feeID', 'purpose'],
    ]);
}

二、 reles() on 关键字绑定,一个场景用字符串,多个场景用数组

 public function rules()
    {
        return [
            ....
            [['type', 'handlerName', 'departmentID', 'feeID', 'purpose'], 'required', 'on' => ['create','update']],//场景关键词 on  ,场景名与方法无关。
            [['amount', 'years'], 'required', 'on' => ['create']],
        ];
    }

三、控制器方法里注明场景

public function actionCreate()
{
        $model = new AnnualBudget();
        //$model = AnnualBudget(['scenario' => 'create']);//有此行即可省略下面
        $model->scenario = 'create';//对应模型里的场景名!
        //$model->setScenario('create')
        .....
}

针对yii2中文社区的场景法。可以参考下http://www.yiichina.com/tutorial/89

相关文章

  • YII2 场景运用 demo

    一、在model中声明场景 如果要定义 方法名必须是 scenarios()如果不定义 scenarios(),只...

  • 在 Yii2 Active Record 中使用事务

    今天由于业务需要在 Yii2 中使用事务,搜索了一圈,发现 Yii2 的 Ar 自带有事务。只需要配置模型使用场景...

  • YII2 表单ajax demo

    一、表单调取数据 二、控制器响应返回值

  • sentinal源码4-demo-basic处理流程

    sentinal提供了很多场景的demo程序,这里看下sentinel-demo-basic里面的几个demo 配...

  • 46

    继续写demo,用flyio进行获取数据,用了$emit来进行子组件向父组件传递数据,有一个yii2写的问答系统,...

  • YII2 使用Echart 简易demo

    第一步 下载第三方包 使用compose下载 "bower-asset/echarts": "2.2.1"; 以...

  • YII2 echart 饼图 demo

    echart 使用 视图层view.php 此次针对 echart 饼状图。控制器代码类似。 主要记录一下数据格式...

  • [场景] -- Yii2场景scenarios使用

    举个简单的例子,现在在 post表里面有title image content三个的字段,当我创建一个 post的...

  • 2019-03-16小程序点击切换显示隐藏

    主要思路是三元运算符的运用; 先来看一下效果,做了2个小demo; demo1 demo2 demo1的实现:WX...

  • 场景运用文案练习

    ·上完一天的课,回到宿舍,只想打开电脑追剧,或打开手机吃鸡。但当犒劳自己一小时后,心里总是莫名地焦虑和空虚。不禁想...

网友评论

      本文标题:YII2 场景运用 demo

      本文链接:https://www.haomeiwen.com/subject/wmrtghtx.html