diff options
Diffstat (limited to 'framework/validators/CInlineValidator.php')
| -rw-r--r-- | framework/validators/CInlineValidator.php | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/framework/validators/CInlineValidator.php b/framework/validators/CInlineValidator.php new file mode 100644 index 0000000..f88350d --- /dev/null +++ b/framework/validators/CInlineValidator.php @@ -0,0 +1,81 @@ +<?php +/** + * CInlineValidator class file. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link http://www.yiiframework.com/ + * @copyright Copyright © 2008-2011 Yii Software LLC + * @license http://www.yiiframework.com/license/ + */ + +/** + * CInlineValidator represents a validator which is defined as a method in the object being validated. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @version $Id: CInlineValidator.php 3517 2011-12-28 23:22:21Z mdomba $ + * @package system.validators + * @since 1.0 + */ +class CInlineValidator extends CValidator +{ + /** + * @var string the name of the validation method defined in the active record class + */ + public $method; + /** + * @var array additional parameters that are passed to the validation method + */ + public $params; + /** + * @var string the name of the method that returns the client validation code (See {@link clientValidateAttribute}). + */ + public $clientValidate; + + /** + * 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) + { + $method=$this->method; + $object->$method($attribute,$this->params); + } + + /** + * Returns the JavaScript code needed to perform client-side validation by calling the {@link clientValidate} method. + * In the client validation code, these variables are predefined: + * <ul> + * <li>value: the current input value associated with this attribute.</li> + * <li>messages: an array that may be appended with new error messages for the attribute.</li> + * <li>attribute: a data structure keeping all client-side options for the attribute</li> + * </ul> + * <b>Example</b>: + * + * If {@link clientValidate} is set to "clientValidate123", clientValidate123() is the name of + * the method that returns the client validation code and can look like: + * <pre> + * <?php + * public function clientValidate123($attribute) + * { + * $js = "if(value != '123') { messages.push('Value should be 123'); }"; + * return $js; + * } + * ?> + * </pre> + * @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.9 + */ + public function clientValidateAttribute($object,$attribute) + { + if($this->clientValidate!==null) + { + $method=$this->clientValidate; + return $object->$method($attribute); + } + } +} |
