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

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

需求描述

有个mobile字段,想只修改这个字段的时候验证为必填,创建的时候不是必填项

场景配置

我们的场景就命名为editmobile吧

public function scenarios(){    return [        'editmobile' => ['mobile'],    ];}

修改rules

public function rules(){   return [           [['company', 'email'], 'string', 'max' => 60],           [['company', 'city'], 'required'],           [['mobile'], 'required',"on"=>["editmobile"]],        ];}

使用场景

$model = Info::find()->where(['t_id'=> $id])->one();$model->setScenario('editmobile'); //or $model->scenario = 'editmobile';$model->load(Yii::$app->request->post());if($model->save){  //todo}

遇到的问题

起作用了

但是使用create的时候,保存却出了问题,提示unknown scenarios:default

解决方法

后来找文章,是因为设置场景的时候,直接把父类的场景覆盖了。所以应该这样写scenarios

public function scenarios(){    $scenarios = parent::scenarios();    $scenarios['editmobile'] = ['mobile'];    return $scenarios;}

这样就ok了。

参考文章:

转载地址:http://bfgjx.baihongyu.com/

你可能感兴趣的文章
Batch update returned unexpected row count from update [0];
查看>>
typescript 学习随记No.1
查看>>
理解Angular中的$apply()以及$digest()
查看>>
排列2
查看>>
移动端web app开发备忘
查看>>
调用接口中方法的两种方式
查看>>
关于Length() 和Sizeof() 的区别
查看>>
Java基础面试操作题:读取该文件内容,并按照自然顺序排序后输出到 另一个文件中...
查看>>
FlasCC例子研究之Animation
查看>>
lis =[2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv'] 将列表lis中的'tt'变成大写(用两种方式)。...
查看>>
egret的tween动画循环播放
查看>>
curl及wget使用说明
查看>>
101个LINQ例子
查看>>
数据结构 d-堆
查看>>
linux 进程间通信机制(IPC机制)一总览
查看>>
学习进度条——第13周
查看>>
秒速五厘米的爱情
查看>>
怎么跑里面去了,
查看>>
为什么有时候 进入这么多次,一次是 38次,一次是 114次,
查看>>
2019第三次课程设计
查看>>