Yii2 提供了一套完善的引數校驗規則,但有時可能不滿足實際需求,需要我們自定義規則,這里簡單介紹下自定義規則的使用,
比如有個引數 country ,只能接收 'USA', 'Web',其余校驗不通過,
代碼如下:
public $country; public function rules() { return [ // 自定義validateCountry()方法校驗規則 ['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".'); } }
常見問題:自定義規則失效,
按上述代碼其實有個規則失效問題,當引數為空的時候或者已經在其他驗證中失效的情況下,是不走validateCountry() 方法的,
這時可以加上引數 skipOnEmpty 和 skipOnError 設定為 false,

代碼如下:
public $country; public function rules() { return [ // 自定義validateCountry()方法校驗規則 ['country', 'validateCountry', 'skipOnEmpty' => false, 'skipOnError' => false], ]; } public function validateCountry($attribute, $params) { if (!in_array($this->$attribute, ['USA', 'Web'])) { $this->addError($attribute, 'The country must be either "USA" or "Web".'); } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/13968.html
標籤:PHP
