Validation Yii2验证。在多个属性上运行筛选器
如何获取正在处理的属性名?我发现的唯一解决方法是为每个属性单独设置过滤器…传递给验证函数的第一个参数是Validation Yii2验证。在多个属性上运行筛选器,validation,yii2,Validation,Yii2,如何获取正在处理的属性名?我发现的唯一解决方法是为每个属性单独设置过滤器…传递给验证函数的第一个参数是$attribute,因此可以按如下方式使用它 public function rules() { return [ [['option_list', 'modifier'], 'filter', 'filter' => function($value) { // I can get the value but I don't know to
$attribute
,因此可以按如下方式使用它
public function rules()
{
return [
[['option_list', 'modifier'], 'filter', 'filter' => function($value) {
// I can get the value but I don't know to which attribute it belongs (option_list or modifier)
}],
];
}
公共功能规则()
{
返回[
[['选项列表','修饰符'],函数($attribute){
//将$this->$属性用于条件或筛选
//使用$this->addError($attribute,'')添加错误
}],
];
}
请参见是的,但针对验证器。请注意,我使用了“filter”。@SergeyOnishchenko是的,但实际上
filter
只是Yii2核心验证器之一。在自己的规则中,您也可以轻松执行筛选。是的,这是可以的,但在这种情况下,数据修改而不是验证并不明显。@SergeyOnishchenko它只是验证规则名称的语义值。您可以将验证规则函数命名为myFilter
,并将其用作过滤器。或者您可以使用适当的调用语义创建自己的验证类(可能是从内置继承的)
public function rules()
{
return [
[['option_list', 'modifier'], function($attribute) {
// use $this->$attribute for conditions or filtering
// use $this->addError($attribute, '<error message>') for adding errors
}],
];
}