关于 load 和 validate 的问题 [ 2.0 版本 ]
第一次提问,格式有些不太懂,见谅
业务逻辑是这样的:当接口没有收到invite字段时(通过GET方式传到这个接口),需要额外添加一个验证规则:xid,required。
我用Postman测试这个接口时,传过去一个invite还是出错:xid不能为空。
调试:我在load后面加一句 return $model->getErrors()
测试是没有错误信息的,但是我将这句 $model->invite = $invite
移到load前就没有xid不能为空的错误了,个人想不太明白。以下是简化的代码。
AR 模型类 Member
$invite
是 public 声明的一个成员变量,不是来自数据库中的属性
public function rules(){
$rules = [
['username','required'],
];
if(empty($this->invite)){
$appendRules = [
['xid','required'],
];
$rules = array_merge($rules,$appendRules);
}
return $rules;
}
控制器某方法
$model = new Member();
$post = Yii::$app->getRequest()->post();
$invite = Yii::$app->getRequest()->get('invite');
$model->load($post,'');
$model->invite = $invite
if($model->validate()){
return 'validate success!';
}else{
return $model->getErrors();
}
最佳答案
PenDon 长沙
注册时间:2019-08-21
最后登录:2021-11-19
在线时长:22小时42分
最后登录:2021-11-19
在线时长:22小时42分
- 粉丝0
- 金钱540
- 威望10
- 积分860