Yii2 rules 自定義規則


 

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".');
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM