mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-10-31 10:39:59 +08:00 
			
		
		
		
	Finished js validation for compare validator.
This commit is contained in:
		| @ -30,6 +30,47 @@ yii.validation = (function ($) { | |||||||
| 			valid || messages.push(options.message); | 			valid || messages.push(options.message); | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
|  | 		compare: function (value, messages, options) { | ||||||
|  | 			if (options.skipOnEmpty && isEmpty(value)) { | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			var compareValue, valid = true; | ||||||
|  | 			if (options.compareAttribute === undefined) { | ||||||
|  | 				compareValue = options.compareValue; | ||||||
|  | 			} else { | ||||||
|  | 				compareValue = $('#' + options.compareAttribute).val(); | ||||||
|  | 			} | ||||||
|  | 			switch (options.operator) { | ||||||
|  | 				case '==': | ||||||
|  | 					valid = value == compareValue; | ||||||
|  | 					break; | ||||||
|  | 				case '===': | ||||||
|  | 					valid = value === compareValue; | ||||||
|  | 					break; | ||||||
|  | 				case '!=': | ||||||
|  | 					valid = value != compareValue; | ||||||
|  | 					break; | ||||||
|  | 				case '!==': | ||||||
|  | 					valid = value !== compareValue; | ||||||
|  | 					break; | ||||||
|  | 				case '>': | ||||||
|  | 					valid = value > compareValue; | ||||||
|  | 					break; | ||||||
|  | 				case '>=': | ||||||
|  | 					valid = value >= compareValue; | ||||||
|  | 					break; | ||||||
|  | 				case '<': | ||||||
|  | 					valid = value < compareValue; | ||||||
|  | 					break; | ||||||
|  | 				case '<=': | ||||||
|  | 					valid = value <= compareValue; | ||||||
|  | 					break; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			valid || messages.push(options.message); | ||||||
|  | 		}, | ||||||
|  |  | ||||||
| 		boolean: function (value, messages, options) { | 		boolean: function (value, messages, options) { | ||||||
| 			if (options.skipOnEmpty && isEmpty(value)) { | 			if (options.skipOnEmpty && isEmpty(value)) { | ||||||
| 				return; | 				return; | ||||||
|  | |||||||
| @ -83,7 +83,7 @@ class BooleanValidator extends Validator | |||||||
| 	 */ | 	 */ | ||||||
| 	public function clientValidateAttribute($object, $attribute) | 	public function clientValidateAttribute($object, $attribute) | ||||||
| 	{ | 	{ | ||||||
| 		$options['message'] = array( | 		$options = array( | ||||||
| 			'trueValue' => $this->trueValue, | 			'trueValue' => $this->trueValue, | ||||||
| 			'falseValue' => $this->falseValue, | 			'falseValue' => $this->falseValue, | ||||||
| 			'message' => Html::encode(strtr($this->message, array( | 			'message' => Html::encode(strtr($this->message, array( | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ namespace yii\validators; | |||||||
|  |  | ||||||
| use Yii; | use Yii; | ||||||
| use yii\base\InvalidConfigException; | use yii\base\InvalidConfigException; | ||||||
|  | use yii\helpers\Html; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * CompareValidator compares the specified attribute value with another value and validates if they are equal. |  * CompareValidator compares the specified attribute value with another value and validates if they are equal. | ||||||
| @ -58,6 +59,15 @@ class CompareValidator extends Validator | |||||||
| 	 * - `<=`: validates to see if the value being validated is less than or equal to the value being compared with. | 	 * - `<=`: validates to see if the value being validated is less than or equal to the value being compared with. | ||||||
| 	 */ | 	 */ | ||||||
| 	public $operator = '='; | 	public $operator = '='; | ||||||
|  | 	/** | ||||||
|  | 	 * @var string the user-defined error message. It may contain the following placeholders which | ||||||
|  | 	 * will be replaced accordingly by the validator: | ||||||
|  | 	 * | ||||||
|  | 	 * - `{attribute}`: the label of the attribute being validated | ||||||
|  | 	 * - `{value}`: the value of the attribute being validated | ||||||
|  | 	 * - `{compareValue}`: the value or the attribute label to be compared with | ||||||
|  | 	 */ | ||||||
|  | 	public $message; | ||||||
|  |  | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| @ -172,24 +182,27 @@ class CompareValidator extends Validator | |||||||
| 	 */ | 	 */ | ||||||
| 	public function clientValidateAttribute($object, $attribute) | 	public function clientValidateAttribute($object, $attribute) | ||||||
| 	{ | 	{ | ||||||
|  | 		$options = array('operator' => $this->operator); | ||||||
|  |  | ||||||
| 		if ($this->compareValue !== null) { | 		if ($this->compareValue !== null) { | ||||||
| 			$compareLabel = $this->compareValue; | 			$options['compareValue'] = $this->compareValue; | ||||||
| 			$compareValue = json_encode($this->compareValue); | 			$compareValue = $this->compareValue; | ||||||
| 		} else { | 		} else { | ||||||
| 			$compareAttribute = $this->compareAttribute === null ? $attribute . '_repeat' : $this->compareAttribute; | 			$compareAttribute = $this->compareAttribute === null ? $attribute . '_repeat' : $this->compareAttribute; | ||||||
| 			$compareValue = "\$('#" . (CHtml::activeId($object, $compareAttribute)) . "').val()"; | 			$compareValue = $object->getAttributeLabel($compareAttribute); | ||||||
| 			$compareLabel = $object->getAttributeLabel($compareAttribute); | 			$options['compareAttribute'] = Html::getInputId($object, $compareAttribute); | ||||||
| 		} | 		} | ||||||
| 		$condition = "value {$this->operator} $compareValue"; |  | ||||||
| 		$message = strtr($this->message, array( |  | ||||||
| 			'{attribute}' => $object->getAttributeLabel($attribute), |  | ||||||
| 			'{compareValue}' => $compareLabel, |  | ||||||
| 		)); |  | ||||||
|  |  | ||||||
| 		return " | 		if ($this->skipOnEmpty) { | ||||||
| if (" . ($this->skipOnEmpty ? "$.trim(value)!='' && " : '') . $condition . ") { | 			$options['skipOnEmpty'] = 1; | ||||||
| 	messages.push(" . json_encode($message) . "); | 		} | ||||||
| } |  | ||||||
| "; | 		$options['message'] = Html::encode(strtr($options['message'], array( | ||||||
|  | 			'{attribute}' => $object->getAttributeLabel($attribute), | ||||||
|  | 			'{value}' => $object->$attribute, | ||||||
|  | 			'{compareValue}' => $compareValue, | ||||||
|  | 		))); | ||||||
|  |  | ||||||
|  | 		return 'yii.validation.compare(value, messages, ' . json_encode($options) . ');'; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -76,10 +76,11 @@ abstract class Validator extends Component | |||||||
| 	 */ | 	 */ | ||||||
| 	public $attributes; | 	public $attributes; | ||||||
| 	/** | 	/** | ||||||
| 	 * @var string the user-defined error message. Error message may contain some placeholders | 	 * @var string the user-defined error message. It may contain the following placeholders which | ||||||
| 	 * that will be replaced with the actual values by the validator. | 	 * will be replaced accordingly by the validator: | ||||||
| 	 * The `{attribute}` and `{value}` are placeholders supported by all validators. | 	 * | ||||||
| 	 * They will be replaced with the attribute label and value, respectively. | 	 * - `{attribute}`: the label of the attribute being validated | ||||||
|  | 	 * - `{value}`: the value of the attribute being validated | ||||||
| 	 */ | 	 */ | ||||||
| 	public $message; | 	public $message; | ||||||
| 	/** | 	/** | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Qiang Xue
					Qiang Xue