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

Php 在Yii 2中验证内联验证器中的多个属性,php,yii,yii2,Php,Yii,Yii2,我知道您可以使用以下方法验证单个属性: 但是我如何将多个属性传递到验证器中呢。。。或者我应该在验证器中通过$this引用它们吗?而不是直接访问额外的字段,例如使用$this->email,您可以在参数中作为字段传递额外的属性,比如 ['username', 'customValidator', 'params' => ['extraFields' => 'email']] public function customValidator($attribute, $params) {

我知道您可以使用以下方法验证单个属性:


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

而不是直接访问额外的字段,例如使用
$this->email
,您可以在
参数中作为字段传递额外的属性,比如

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


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

在Yii2中,您应该这样写:

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

我想你不明白这里发生了什么。数组
['country','validateCountry']
基本上说明validateCountry应用于country,如果您想将validator函数应用于其他属性,只需添加
['secondAttribute','validateCountry']
,验证器将自动为
国家
第二属性
@Mr.Meshuggah应用该功能是的,我了解它的工作原理。它在
country
属性上工作,该属性是
$this->country
。但是,我需要创建一个自定义验证器函数,根据数据库检查
用户名
电子邮件
属性;我更愿意将它们都传递给一个验证器,而不是单独传递,这样我就可以运行单个查询了。这是可行的,但我必须这样做:
['username'、'customValidator'、'params'=>['email'=>'email']]
您只复制了上述答案,没有任何有用的解释。@L.Antonelli注意更新时间。我在2015年为Yii2做了回答,他在2016年编辑了答案。是他抄了我的答案。
['username', 'customValidator', 'params' => ['extraFields' => 'email']]