在Yii 2中验证内联验证器中的多个属性

时间:2014-11-27 10:30:27

标签: php yii yii2

我知道您可以使用inline validator验证单个属性,例如:

['country', 'validateCountry']

public function validateCountry($attribute, $params)
{
    if (!in_array($this->$attribute, ['USA', 'Web'])) {
        $this->addError($attribute, 'The country must be either "USA" or "Web".');
    }
}

但是如何将多个属性传递给验证器呢? ...或者我应该在验证器中通过$this引用它们吗?

2 个答案:

答案 0 :(得分:8)

不是直接访问额外字段,例如使用$this->email,您可以将其他属性作为params中的字段传递,就像compareValidator的工作方式一样,即

['username', 'customValidator', 'params' => ['extraFields' => 'email']]


public function customValidator($attribute, $params) {
    //access extrafields using $this->{$params['extraFields']}
}

答案 1 :(得分:3)

在Yii2中,你应该写如下:

['username', 'customValidator', 'params' => ['extraFields' => 'email']]