From efc2ce4a4e469085a10a424f2fd09ce688fb6b31 Mon Sep 17 00:00:00 2001 From: carlgmathisen <> Date: Thu, 30 Oct 2008 17:07:05 +0000 Subject: Issue 39 - Implement validator not requiring ControlToValidate --- framework/Web/UI/WebControls/TBaseValidator.php | 8 +++++++- framework/Web/UI/WebControls/TCustomValidator.php | 25 +++++++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) (limited to 'framework/Web/UI') diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php index 56239bcb..b418885c 100644 --- a/framework/Web/UI/WebControls/TBaseValidator.php +++ b/framework/Web/UI/WebControls/TBaseValidator.php @@ -496,7 +496,7 @@ abstract class TBaseValidator extends TLabel implements IValidator $this->setIsValid(true); $this->onValidate(); if($this->getVisible(true) && $this->getEnabled(true)) - { + { // if the target is not a disabled web control if(($target=$this->getValidationTarget())!==null && !($target instanceof TWebControl && !$target->getEnabled(true))) { @@ -512,6 +512,12 @@ abstract class TBaseValidator extends TLabel implements IValidator $this->onValidationError(); } } + else + { + $this->evaluateIsValid(); + $this->setIsValid(true); + $this->onValidationSuccess(); + } } return $this->getIsValid(); } diff --git a/framework/Web/UI/WebControls/TCustomValidator.php b/framework/Web/UI/WebControls/TCustomValidator.php index fe540c80..0b82ac5c 100644 --- a/framework/Web/UI/WebControls/TCustomValidator.php +++ b/framework/Web/UI/WebControls/TCustomValidator.php @@ -4,7 +4,7 @@ * * @author Qiang Xue * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2008 PradoSoft + * @copyright Copyright © 2005-2008 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id$ * @package System.Web.UI.WebControls @@ -88,7 +88,9 @@ class TCustomValidator extends TBaseValidator */ public function evaluateIsValid() { - $value=$this->getValidationValue($this->getValidationTarget()); + $value = ''; + if($this->getValidationTarget()!==null) + $value=$this->getValidationValue($this->getValidationTarget()); return $this->onServerValidate($value); } @@ -105,9 +107,24 @@ class TCustomValidator extends TBaseValidator { $param=new TServerValidateEventParameter($value,true); $this->raiseEvent('OnServerValidate',$this,$param); - return $param->getIsValid(); + if($this->getValidationTarget()==null) + return true; + else + return $param->getIsValid(); + } + + /** + * @return TControl control to be validated. Null if no control is found. + */ + protected function getValidationTarget() + { + if(($id=$this->getControlToValidate())!=='' && ($control=$this->findControl($id))!==null) + return $control; + else if(($id=$this->getControlToValidate())!=='') + throw new TInvalidDataTypeException('basevalidator_validatable_required',get_class($this)); + else + return null; } - /** * Returns an array of javascript validator options. -- cgit v1.2.3