php – 如何在Yii2中的动态模型中添加自定义验证功能?
作者:互联网
我在yii2基本应用程序中使用动态模型.
以下是我的动态模型的代码.
$model = new \yii\base\DynamicModel([
'role', 'from_rm', 'to_rm', 'user1_subdistrcts'
]);
$model->addRule(['user1_subdistrcts', 'role'], 'required', ['message' => "Please select this field."])
->addRule(['from_rm'], 'checkRm');
在这里我愿意用户自定义验证函数’checkRm’形式from_rm字段我也定义了checkRm函数,如下所示:
public function checkRm($from_rm, $params)
{
$this->addError($from_rm, 'Please Select Regional Manager.');
}
但是,当我提交表单时,我得到错误类checkRm没有找到
现在请帮助如何在动态模型中使用自定义验证.
我也尝试过when和whenClient条件,但那些也不起作用
解决方法:
试试这个:
$model = new \yii\base\DynamicModel([
'role', 'from_rm', 'to_rm', 'user1_subdistrcts'
]);
$model->addRule('from_rm', function ($attribute, $params) use ($model) {
$model->addError($attribute, 'Please Select Regional Manager.');
});
编辑:
是的,它有效.但是如果要使用from_rm的空值进行测试,则需要将skipOnEmpty设置为false.例:
$model = new \yii\base\DynamicModel([
'role', 'from_rm', 'to_rm', 'user1_subdistrcts'
]);
$model->addRule('from_rm', function ($attribute, $params) use ($model) {
$model->addError($attribute, 'Please Select Regional Manager.');
}, [
'skipOnEmpty' => false,
]);
$model->validate();
var_dump($model->getErrors());
标签:php,yii2,yii2-basic-app,yii2-model 来源: https://codeday.me/bug/20190706/1393547.html