Package | system.validators |
---|---|
Inheritance | class CCompareValidator » CValidator » CComponent |
Since | 1.0 |
Source Code | framework/validators/CCompareValidator.php |
Property | Type | Description | Defined By |
---|---|---|---|
allowEmpty | boolean | whether the attribute value can be null or empty. | CCompareValidator |
attributes | array | list of attributes to be validated. | CValidator |
builtInValidators | array | list of built-in validators (name=>class) | CValidator |
compareAttribute | string | the name of the attribute to be compared with | CCompareValidator |
compareValue | string | the constant value to be compared with | CCompareValidator |
enableClientValidation | boolean | whether to perform client-side validation. | CValidator |
except | array | list of scenarios that the validator should not be applied to. | CValidator |
message | string | the user-defined error message. | CValidator |
on | array | list of scenarios that the validator should be applied. | CValidator |
operator | string | the operator for comparison. | CCompareValidator |
safe | boolean | whether attributes listed with this validator should be considered safe for massive assignment. | CValidator |
skipOnError | boolean | whether this validation rule should be skipped when there is already a validation error for the current attribute. | CValidator |
strict | boolean | whether the comparison is strict (both value and type must be the same. | CCompareValidator |
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
__isset() | Checks if a property value is null. | CComponent |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
applyTo() | Returns a value indicating whether the validator applies to the specified scenario. | CValidator |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
clientValidateAttribute() | Returns the JavaScript needed for performing client-side validation. | CCompareValidator |
createValidator() | Creates a validator object. | CValidator |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
evaluateExpression() | Evaluates a PHP expression or callback under the context of this component. | CComponent |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasProperty() | Determines whether a property is defined. | CComponent |
raiseEvent() | Raises an event. | CComponent |
validate() | Validates the specified object. | CValidator |
Method | Description | Defined By |
---|---|---|
addError() | Adds an error about the specified attribute to the active record. | CValidator |
isEmpty() | Checks if the given value is empty. | CValidator |
validateAttribute() | Validates the attribute of the object. | CCompareValidator |
public boolean $allowEmpty;
whether the attribute value can be null or empty. Defaults to false. If this is true, it means the attribute is considered valid when it is empty.
public string $compareAttribute;
the name of the attribute to be compared with
public string $compareValue;
the constant value to be compared with
public string $operator;
the operator for comparison. Defaults to '='. The followings are valid operators:
public boolean $strict;
whether the comparison is strict (both value and type must be the same.) Defaults to false.
public string clientValidateAttribute(CModel $object, string $attribute) | ||
$object | CModel | the data object being validated |
$attribute | string | the name of the attribute to be validated. |
{return} | string | the client-side validation script. |
public function clientValidateAttribute($object,$attribute)
{
if($this->compareValue !== null)
{
$compareTo=$this->compareValue;
$compareValue=CJSON::encode($this->compareValue);
}
else
{
$compareAttribute=$this->compareAttribute === null ? $attribute . '_repeat' : $this->compareAttribute;
$compareValue="jQuery('#" . (CHtml::activeId($object, $compareAttribute)) . "').val()";
$compareTo=$object->getAttributeLabel($compareAttribute);
}
$message=$this->message;
switch($this->operator)
{
case '=':
case '==':
if($message===null)
$message=Yii::t('yii','{attribute} must be repeated exactly.');
$condition='value!='.$compareValue;
break;
case '!=':
if($message===null)
$message=Yii::t('yii','{attribute} must not be equal to "{compareValue}".');
$condition='value=='.$compareValue;
break;
case '>':
if($message===null)
$message=Yii::t('yii','{attribute} must be greater than "{compareValue}".');
$condition='parseFloat(value)<=parseFloat('.$compareValue.')';
break;
case '>=':
if($message===null)
$message=Yii::t('yii','{attribute} must be greater than or equal to "{compareValue}".');
$condition='parseFloat(value)<parseFloat('.$compareValue.')';
break;
case '<':
if($message===null)
$message=Yii::t('yii','{attribute} must be less than "{compareValue}".');
$condition='parseFloat(value)>=parseFloat('.$compareValue.')';
break;
case '<=':
if($message===null)
$message=Yii::t('yii','{attribute} must be less than or equal to "{compareValue}".');
$condition='parseFloat(value)>parseFloat('.$compareValue.')';
break;
default:
throw new CException(Yii::t('yii','Invalid operator "{operator}".',array('{operator}'=>$this->operator)));
}
$message=strtr($message,array(
'{attribute}'=>$object->getAttributeLabel($attribute),
'{compareAttribute}'=>$compareTo,
));
return "
if(".($this->allowEmpty ? "jQuery.trim(value)!='' && " : '').$condition.") {
messages.push(".CJSON::encode($message).".replace('{compareValue}', ".$compareValue."));
}
";
}
Returns the JavaScript needed for performing client-side validation.
protected void validateAttribute(CModel $object, string $attribute) | ||
$object | CModel | the object being validated |
$attribute | string | the attribute being validated |
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($this->allowEmpty && $this->isEmpty($value))
return;
if($this->compareValue!==null)
$compareTo=$compareValue=$this->compareValue;
else
{
$compareAttribute=$this->compareAttribute===null ? $attribute.'_repeat' : $this->compareAttribute;
$compareValue=$object->$compareAttribute;
$compareTo=$object->getAttributeLabel($compareAttribute);
}
switch($this->operator)
{
case '=':
case '==':
if(($this->strict && $value!==$compareValue) || (!$this->strict && $value!=$compareValue))
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be repeated exactly.');
break;
case '!=':
if(($this->strict && $value===$compareValue) || (!$this->strict && $value==$compareValue))
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must not be equal to "{compareValue}".');
break;
case '>':
if($value<=$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be greater than "{compareValue}".');
break;
case '>=':
if($value<$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be greater than or equal to "{compareValue}".');
break;
case '<':
if($value>=$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be less than "{compareValue}".');
break;
case '<=':
if($value>$compareValue)
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be less than or equal to "{compareValue}".');
break;
default:
throw new CException(Yii::t('yii','Invalid operator "{operator}".',array('{operator}'=>$this->operator)));
}
if(!empty($message))
$this->addError($object,$attribute,$message,array('{compareAttribute}'=>$compareTo,'{compareValue}'=>$compareValue));
}
Validates the attribute of the object. If there is any error, the error message is added to the object.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CCompareValidator