我在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());