我在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没有找到
现在请帮助如何在动态模型中使用自定义验证。
我还尝试了when
和whenClient
条件,但这些条件也无效
答案 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)
如果checkRm
是DynamicModel
类的方法,则此方法有效。因此,要么扩展DynamicModel
并添加此方法,要么使用闭包,如:
...->addRule(['from_rm'], function ($attribute, $params) {
$this->addError($from_rm, 'Please Select Regional Manager.');
});