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']]