* @version $Revision: 1.7 $ $Date: 2005/06/13 07:04:28 $ * @package System.Web.UI.WebControls */ /** * TValidator class file */ require_once(dirname(__FILE__).'/TValidator.php'); /** * TCustomValidator class * * TCustomValidator performs user-defined validation (either * server-side or client-side or both) on an input component. * * To create a server-side validation function, provide a handler for * the OnServerValidate event that performs the validation. * The data string of the input component to validate can be accessed * by the value property of the event parameter which is of type * TServerValidateEventParameter. The result of the validation * should be stored in the isValid property of the event parameter. * * To create a client-side validation function, add the client-side * validation javascript function to the page template. * The function should have the following signature: * * * * Use the ClientValidationFunction property to specify the name of * the client-side validation script function associated with the TCustomValidator. * * Namespace: System.Web.UI.WebControls * * Properties * - ClientValidationFunction, string, kept in viewstate *
Gets or sets the name of the custom client-side script function used for validation. * * Events * - OnServerValidate Occurs when validation is performed on the server. *
Event delegates must set the event parameter TServerValidateEventParameter.isValid * to false if they find the value is invalid. * * @author Qiang Xue * @version v1.0, last update on 2004/08/13 21:44:52 * @package System.Web.UI.WebControls */ class TCustomValidator extends TValidator { /** * @return string the name of the custom client-side script function used for validation. */ public function getClientValidationFunction() { return $this->getViewState('ClientValidationFunction',''); } /** * Sets the name of the custom client-side script function used for validation. * @param string the script function name */ public function setClientValidationFunction($value) { $this->setViewState('ClientValidationFunction',$value,''); } /** * This method overrides the parent's implementation. * The validation succeeds if {@link onServerValidate} returns true. * @return boolean whether the validation succeeds */ public function evaluateIsValid() { $idPath=$this->getControlToValidate(); if(strlen($idPath)) { $control=$this->getTargetControl($idPath); $value=$control->getValidationPropertyValue($idPath); return $this->onServerValidate($value); } else return true; } /** * This method is invoked when the server side validation happens. * It will raise the OnServerValidate event. * The method also allows derived classes to handle the event without attaching a delegate. * Note The derived classes should call parent implementation * to ensure the OnServerValidate event is raised. * @param string the value to be validated * @return boolean whether the value is valid */ public function onServerValidate($value) { $param=new TServerValidateEventParameter; $param->value=$value; $param->isValid=true; $this->raiseEvent('OnServerValidate',$this,$param); return $param->isValid; } /** * Get a list of options for the client-side javascript validator * @return array list of options for the validator */ protected function getJsOptions() { $options = parent::getJsOptions(); $clientJs = $this->getClientValidationFunction(); if(strlen($clientJs)) $options['clientvalidationfunction']=$clientJs; return $options; } } /** * TServerValidateEventParameter class * * TServerValidateEventParameter encapsulates the parameter data for * OnServerValidate event of TCustomValidator components. * * @author Qiang Xue * @version v1.0, last update on 2004/08/13 21:44:52 * @package System.Web.UI.WebControls */ class TServerValidateEventParameter extends TEventParameter { /** * the value to be validated * @var string */ public $value=''; /** * whether the value is valid * @var boolean */ public $isValid=true; } ?>