如何在Yii2中的动态模型中添加自定义验证功能?

时间:2016-10-22 13:33:22

标签: php yii2 yii2-basic-app yii2-model

我在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.');
}

但是当我提交表格时,我得到错误类检查Rm没有找到

现在请帮助如何在动态模型中使用自定义验证。

我还尝试了whenwhenClient条件,但这些条件也无效

2 个答案:

答案 0 :(得分:1)

试试这个:

parseInt

修改

是的,它有效。但是,如果您要使用$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

答案 1 :(得分:0)

如果checkRmDynamicModel类的方法,则此方法有效。因此,要么扩展DynamicModel并添加此方法,要么使用闭包,如:

...->addRule(['from_rm'], function ($attribute, $params) {
    $this->addError($from_rm, 'Please Select Regional Manager.');
});