[ Index ] |
|
Code source de PRADO 3.0.6 |
1 <?php 2 /** 3 * TDataTypeValidator class. 4 * 5 * @author Wei Zhuo <weizhuo[at]gmail[dot]com> 6 * @link http://www.pradosoft.com/ 7 * @copyright Copyright © 2005 PradoSoft 8 * @license http://www.pradosoft.com/license/ 9 * @version $Id: TDataTypeValidator.php 1397 2006-09-07 07:55:53Z wei $ 10 * @package System.Web.UI.WebControls 11 */ 12 13 /** 14 * Using TBaseValidator class 15 */ 16 Prado::using('System.Web.UI.WebControls.TBaseValidator'); 17 18 /** 19 * TDataTypeValidator class 20 * 21 * TDataTypeValidator verifies if the input data is of the type specified 22 * by {@link setDataType DataType}. 23 * The following data types are supported: 24 * - <b>Integer</b> A 32-bit signed integer data type. 25 * - <b>Float</b> A double-precision floating point number data type. 26 * - <b>Date</b> A date data type. 27 * - <b>String</b> A string data type. 28 * For <b>Date</b> type, the property {@link setDateFormat DateFormat} 29 * will be used to determine how to parse the date string. If it is not 30 * provided, the string will be assumed to be in GNU datetime format. 31 * 32 * @author Wei Zhuo <weizhuo[at]gmail[dot]com> 33 * @version $Id: TDataTypeValidator.php 1397 2006-09-07 07:55:53Z wei $ 34 * @package System.Web.UI.WebControls 35 * @since 3.0 36 */ 37 class TDataTypeValidator extends TBaseValidator 38 { 39 /** 40 * Gets the name of the javascript class responsible for performing validation for this control. 41 * This method overrides the parent implementation. 42 * @return string the javascript class name 43 */ 44 protected function getClientClassName() 45 { 46 return 'Prado.WebUI.TDataTypeValidator'; 47 } 48 49 /** 50 * @return TValidationDataType the data type that the values being compared are converted to before the comparison is made. Defaults to TValidationDataType::String. 51 */ 52 public function getDataType() 53 { 54 return $this->getViewState('DataType','String'); 55 } 56 57 /** 58 * Sets the data type that the values being compared are converted to before the comparison is made. 59 * @param TValidationDataType the data type 60 */ 61 public function setDataType($value) 62 { 63 $this->setViewState('DataType',TPropertyValue::ensureEnum($value,'TValidationDataType'),TValidationDataType::String); 64 } 65 66 /** 67 * Sets the date format for a date validation 68 * @param string the date format value 69 */ 70 public function setDateFormat($value) 71 { 72 $this->setViewState('DateFormat', $value, ''); 73 } 74 75 /** 76 * @return string the date validation date format if any 77 */ 78 public function getDateFormat() 79 { 80 return $this->getViewState('DateFormat', ''); 81 } 82 83 84 /** 85 * Determine if the given value is of a particular type using RegExp. 86 * @param string value to check 87 * @return boolean true if value fits the type expression. 88 */ 89 protected function evaluateDataTypeCheck($value) 90 { 91 if($value=='') 92 return true; 93 94 switch($this->getDataType()) 95 { 96 case TValidationDataType::Integer: 97 return preg_match('/^[-+]?[0-9]+$/',trim($value)); 98 case TValidationDataType::Float: 99 return preg_match('/^[-+]?([0-9]*\.)?[0-9]+([eE][-+]?[0-9]+)?$/',trim($value)); 100 case TValidationDataType::Date: 101 $dateFormat = $this->getDateFormat(); 102 if(strlen($dateFormat)) 103 { 104 $formatter = Prado::createComponent('System.Util.TSimpleDateFormatter',$dateFormat); 105 return $formatter->isValidDate($value); 106 } 107 else 108 return strtotime($value) > 0; 109 } 110 return true; 111 } 112 113 /** 114 * Returns an array of javascript validator options. 115 * @return array javascript validator options. 116 */ 117 protected function getClientScriptOptions() 118 { 119 $options = parent::getClientScriptOptions(); 120 $options['DataType']=$this->getDataType(); 121 if(($dateFormat=$this->getDateFormat())!=='') 122 $options['DateFormat']=$dateFormat; 123 return $options; 124 } 125 126 /** 127 * This method overrides the parent's implementation. 128 * The validation succeeds if the input data is of valid type. 129 * The validation always succeeds if ControlToValidate is not specified 130 * or the input data is empty. 131 * @return boolean whether the validation succeeds 132 */ 133 public function evaluateIsValid() 134 { 135 if(($value=$this->getValidationValue($this->getValidationTarget()))==='') 136 return true; 137 138 return $this->evaluateDataTypeCheck($value); 139 } 140 } 141 142 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 21:07:04 2007 | par Balluche grâce à PHPXref 0.7 |