1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- /**
- * CBooleanValidator class file.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.yiiframework.com/
- * @copyright 2008-2013 Yii Software LLC
- * @license http://www.yiiframework.com/license/
- */
- /**
- * CBooleanValidator validates that the attribute value is either {@link trueValue} or {@link falseValue}.
- *
- * When using the {@link message} property to define a custom error message, the message
- * may contain additional placeholders that will be replaced with the actual content. In addition
- * to the "{attribute}" placeholder, recognized by all validators (see {@link CValidator}),
- * CBooleanValidator allows for the following placeholders to be specified:
- * <ul>
- * <li>{true}: replaced with value representing the true status {@link trueValue}.</li>
- * <li>{false}: replaced with value representing the false status {@link falseValue}.</li>
- * </ul>
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @package system.validators
- */
- class CBooleanValidator extends CValidator
- {
- /**
- * @var mixed the value representing true status. Defaults to '1'.
- */
- public $trueValue='1';
- /**
- * @var mixed the value representing false status. Defaults to '0'.
- */
- public $falseValue='0';
- /**
- * @var boolean whether the comparison to {@link trueValue} and {@link falseValue} is strict.
- * When this is true, the attribute value and type must both match those of {@link trueValue} or {@link falseValue}.
- * Defaults to false, meaning only the value needs to be matched.
- */
- public $strict=false;
- /**
- * @var boolean whether the attribute value can be null or empty. Defaults to true,
- * meaning that if the attribute is empty, it is considered valid.
- */
- public $allowEmpty=true;
- /**
- * Validates the attribute of the object.
- * If there is any error, the error message is added to the object.
- * @param CModel $object the object being validated
- * @param string $attribute the attribute being validated
- */
- protected function validateAttribute($object,$attribute)
- {
- $value=$object->$attribute;
- if($this->allowEmpty && $this->isEmpty($value))
- return;
- if(!$this->strict && $value!=$this->trueValue && $value!=$this->falseValue
- || $this->strict && $value!==$this->trueValue && $value!==$this->falseValue)
- {
- $message=$this->message!==null?$this->message:Yii::t('yii','{attribute} must be either {true} or {false}.');
- $this->addError($object,$attribute,$message,array(
- '{true}'=>$this->trueValue,
- '{false}'=>$this->falseValue,
- ));
- }
- }
- /**
- * Returns the JavaScript needed for performing client-side validation.
- * @param CModel $object the data object being validated
- * @param string $attribute the name of the attribute to be validated.
- * @return string the client-side validation script.
- * @see CActiveForm::enableClientValidation
- * @since 1.1.7
- */
- public function clientValidateAttribute($object,$attribute)
- {
- $message=$this->message!==null ? $this->message : Yii::t('yii','{attribute} must be either {true} or {false}.');
- $message=strtr($message, array(
- '{attribute}'=>$object->getAttributeLabel($attribute),
- '{true}'=>$this->trueValue,
- '{false}'=>$this->falseValue,
- ));
- return "
- if(".($this->allowEmpty ? "jQuery.trim(value)!='' && " : '')."value!=".CJSON::encode($this->trueValue)." && value!=".CJSON::encode($this->falseValue).") {
- messages.push(".CJSON::encode($message).");
- }
- ";
- }
- }
|