2017-07-04 99 views
0
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) 
     }], 
    ]; 
} 

如何獲得正在處理的屬性名稱?我發現的唯一的解決方法是使單獨的濾波器對每個屬性...Yii2驗證。對多個屬性運行過濾器

回答

1

傳遞給驗證函數的第一個參數是$attribute如此如下

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 
     }], 
    ]; 
} 

http://www.yiiframework.com/doc-2.0/guide-input-validation.html#creating-validators

+1

是的,你可以用它它是,但對於驗證者。請注意,我使用「過濾器」。 –

+0

@SergeyOnishchenko是的,但實際上'filter'只是Yii2核心驗證器之一。在自己的規則中,您也可以輕鬆執行過濾。 – oakymax

+0

是的,這是可以的,但在這種情況下,數據修改並不是很明顯,而不是驗證。 –