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); | ||||
| 		}, | ||||
|  | ||||
| 		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) { | ||||
| 			if (options.skipOnEmpty && isEmpty(value)) { | ||||
| 				return; | ||||
|  | ||||
| @ -83,7 +83,7 @@ class BooleanValidator extends Validator | ||||
| 	 */ | ||||
| 	public function clientValidateAttribute($object, $attribute) | ||||
| 	{ | ||||
| 		$options['message'] = array( | ||||
| 		$options = array( | ||||
| 			'trueValue' => $this->trueValue, | ||||
| 			'falseValue' => $this->falseValue, | ||||
| 			'message' => Html::encode(strtr($this->message, array( | ||||
|  | ||||
| @ -9,6 +9,7 @@ namespace yii\validators; | ||||
|  | ||||
| use Yii; | ||||
| use yii\base\InvalidConfigException; | ||||
| use yii\helpers\Html; | ||||
|  | ||||
| /** | ||||
|  * 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. | ||||
| 	 */ | ||||
| 	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) | ||||
| 	{ | ||||
| 		$options = array('operator' => $this->operator); | ||||
|  | ||||
| 		if ($this->compareValue !== null) { | ||||
| 			$compareLabel = $this->compareValue; | ||||
| 			$compareValue = json_encode($this->compareValue); | ||||
| 			$options['compareValue'] = $this->compareValue; | ||||
| 			$compareValue = $this->compareValue; | ||||
| 		} else { | ||||
| 			$compareAttribute = $this->compareAttribute === null ? $attribute . '_repeat' : $this->compareAttribute; | ||||
| 			$compareValue = "\$('#" . (CHtml::activeId($object, $compareAttribute)) . "').val()"; | ||||
| 			$compareLabel = $object->getAttributeLabel($compareAttribute); | ||||
| 			$compareValue = $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 ? "$.trim(value)!='' && " : '') . $condition . ") { | ||||
| 	messages.push(" . json_encode($message) . "); | ||||
| 		if ($this->skipOnEmpty) { | ||||
| 			$options['skipOnEmpty'] = 1; | ||||
| 		} | ||||
| "; | ||||
|  | ||||
| 		$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; | ||||
| 	/** | ||||
| 	 * @var string the user-defined error message. Error message may contain some placeholders | ||||
| 	 * that will be replaced with the actual values by the validator. | ||||
| 	 * The `{attribute}` and `{value}` are placeholders supported by all validators. | ||||
| 	 * They will be replaced with the attribute label and value, respectively. | ||||
| 	 * @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 | ||||
| 	 */ | ||||
| 	public $message; | ||||
| 	/** | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Qiang Xue
					Qiang Xue