加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读