美文网首页
Yii2校验:两个字段必须出现一个(either one is

Yii2校验:两个字段必须出现一个(either one is

作者: syca | 来源:发表于2018-04-03 00:16 被阅读0次

    问题:给定两个字段ab,要求必须出现至少一个
    特点:一次性校验多个字段

    在Yii2里,框架本身提供了一系列的校验器帮助我们校验用户输入,例如requiredcomparerangedate等等,它们大多数都是描述某一个字段应该符合什么样的规则。如果我们要对某几个字段之间的关系进行校验,就找不到对应的内置的核心校验器了。但是对字段之间的关系进行描述这种需求也不是很少见,这里提供一些在Yii2中实现这种校验的思路。

    Conditional Validation

    ['fieldA', 'required', 'when' => function($model) {
        return empty($model->fieldB);
    }, 'message' => 'fieldA or fieldB is required'],
    

    Inline Validator

    public function rules()
    {
        return [
            [['fieldA', 'fieldB'], 'eitherOneRequired', 'skipOnEmpty' => false, 'skipOnError' => false],
        ];
    }
    
    public function eitherOneRequired($attribute, $params, $validator)
    {
        if (empty($this->fieldA)
            && empty($this->fieldB)
        ) {
            $this->addError($attribute, 'fieldA or fieldB is required');
    
            return false;
        }
    
        return true;
    }
    

    参考:

    相关文章

      网友评论

          本文标题:Yii2校验:两个字段必须出现一个(either one is

          本文链接:https://www.haomeiwen.com/subject/ucefhftx.html