模型验证规则能不能做到post的数据中? [ 2.0 版本 ]
我想问下,验证规则,能不能做到post的数据中,如果type=1 ,start_time,end_time 这两个参数必填,如果type=2,start_time必填?
共 5 个回答
-
dashixiong 回答于 2017-04-21 17:13 举报
可以的兄弟。
public function rules() { return [ ['start_time','checkType'],// 检测 ['end_time','checkType'],// 检测 ]; }
public function checkType($attribute, $params) { if (!$this->hasErrors()) { $id = Yii::$app->request->get('id'); if($this->type == 1){ if(empty($this->start_time)){ // 判断两个是否为空,如果为空,就添加错误 $this->addError($attribute, '字段不能为空'); } }else if($this->type == 2){ 判断 } } }
我强烈建议不要这样搞,可以自己写一个dosave方法,然后判断id ,如果没有get到id说明是创建,如果get到了说明是更新。
-
public function rules() { return [ ['start_time', 'required', 'when' => function($model) { return in_array($model->type, [1, 2]); }], ['end_time', 'required', 'when' => function($model) { return $model->type == 1; }], ]; }
miaow999 觉得很赞
xiaoguo0426
注册时间:2016-12-20
最后登录:2017-04-24
在线时长:0小时45分
最后登录:2017-04-24
在线时长:0小时45分
- 粉丝0
- 金钱5
- 威望0
- 积分5