Author: Bailang Source: www.manks.top/article/yii2_custom_rules
The copyright of this article belongs to the author, and you are welcome to reprint it. However, this statement must be retained without the author's consent, and a link to the original text must be provided in an obvious position on the article page. Otherwise, we reserve the right to pursue legal liability.
One of the powerful features of yii2 is its Form component, which is both convenient and safe. Some friends feel that after using Yii for a while, it seems to be nothing but "difficult to understand" than TP.
The leader arranged for a registration function, but this guy used Baidu’s various good form styles, and Baidu’s validate verification. I really felt sorry for this guy.
Of course, without further ado, our focus is to use ActiveForm and then how to implement custom validation rules.
Let’s talk about the scene first:
Conditions: ①. There are two fields, namely A and B. ②. A has two values, 1 and 2 respectively.
The requirement is: when the value of A selected by the user is equal to 1, the value of B must be filled in. When the value of A is equal to 2, it does not matter if the value of B is not written. Among them, A is required.
Let’s see how to implement it using the rules that come with Yii2
First add the following rule to its associated model
/** * @inheritdoc */ public function rules() { return [ [['B'], 'requiredByASpecial'], ]; }
Then implement the requiredByASpecial method in the model
/** * 自定义验证B */ public function requiredByASpecial($attribute, $params) { if ($this->A== 1) { if ($this->B=== '') $this->addError($attribute, "B的值不可以为空."); } }
The above means that when A is equal to 1 and the value of B is empty, the error message "The value of B cannot be empty" is returned.
The above is just a simple example, which can be applied according to specific needs.