我知道您可以使用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
引用它们吗?
答案 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']]