我创建了一个简单的验证,如:
public function actionMerchant() {
$post = Yii::$app->request->post();
$model = DynamicModel::validateData($post, [
[['mid'], 'required'],
[['mid'], 'integer'],
['email', 'email'],
]);
if ($model->hasErrors()) {
return [
"message" => "Validation fail. Please check your input!"
];
}
return $model;
}
从上面的代码中,我希望如果我发送mid和email参数的post参数,这两个参数都可以由DynamicModel类验证。
我遇到的问题,如果我仅发送电子邮件参数没有 mid参数会怎么样?
我会收到Getting unknown property: yii\\base\\DynamicModel::mid
错误消息。
是否需要验证不起作用?
由于
答案 0 :(得分:2)
要求验证工作正常。问题出现在DynamicModel
中,因为Yii2正在从您传递的第一个参数创建对象属性(例如,您的$_POST
属性)。要使其正常工作,首先定义模型属性,然后为其加载值,然后验证。
===编辑===
$model = new DynamicModel(['mid' => null, 'email' => null]);
$model->addRule('email', 'email');
//here add more rules
$model->load($post);
$model->validate();