php – 如何在Yii2中的动态模型中添加自定义验证功能?
发布时间:2020-12-13 16:05:51 所属栏目:PHP教程 来源:网络整理
导读:我在yii2基本应用程序中使用动态模型. 以下是我的动态模型的代码. $model = new yiibaseDynamicModel([ 'role','from_rm','to_rm','user1_subdistrcts' ]); $model-addRule(['user1_subdistrcts','role'],'required',['message' = "Please select this fi
我在yii2基本应用程序中使用动态模型.
以下是我的动态模型的代码. $model = new yiibaseDynamicModel([ '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 yiibaseDynamicModel([ 'role','user1_subdistrcts' ]); $model->addRule('from_rm',function ($attribute,$params) use ($model) { $model->addError($attribute,'Please Select Regional Manager.'); }); 编辑: 是的,它有效.但是如果要使用from_rm的空值进行测试,则需要将skipOnEmpty设置为false.例: $model = new yiibaseDynamicModel([ 'role','user1_subdistrcts' ]); $model->addRule('from_rm',$params) use ($model) { $model->addError($attribute,'Please Select Regional Manager.'); },[ 'skipOnEmpty' => false,]); $model->validate(); var_dump($model->getErrors()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |