From fceb3741d3b0c1e00e81a4a24caf7d49a86896b4 Mon Sep 17 00:00:00 2001 From: xue <> Date: Wed, 22 Feb 2006 02:46:25 +0000 Subject: Updated some validators and relevant demos. --- .../Samples/TEmailAddressValidator/Home.page | 3 +- .../Samples/TRegularExpressionValidator/Home.page | 21 +++--- .../Samples/TRequiredFieldValidator/Home.page | 74 +++++++++++++++++++++- .../protected/pages/Controls/Validation.page | 39 ++++++++---- framework/Exceptions/messages.txt | 6 +- framework/Web/UI/WebControls/TBaseValidator.php | 4 +- framework/Web/UI/WebControls/TCompareValidator.php | 2 +- .../Web/UI/WebControls/TEmailAddressValidator.php | 24 ++++++- .../UI/WebControls/TRegularExpressionValidator.php | 1 - .../Web/UI/WebControls/TValueTypeValidator.php | 21 +++++- 10 files changed, 156 insertions(+), 39 deletions(-) diff --git a/demos/quickstart/protected/pages/Controls/Samples/TEmailAddressValidator/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TEmailAddressValidator/Home.page index db63a0a9..79066e44 100644 --- a/demos/quickstart/protected/pages/Controls/Samples/TEmailAddressValidator/Home.page +++ b/demos/quickstart/protected/pages/Controls/Samples/TEmailAddressValidator/Home.page @@ -1,7 +1,7 @@

TEmailAddressValidator Samples

-

Note:TEmailAddressValidator will start +

Note: TEmailAddressValidator will start to validate only if the input is not empty.

@@ -44,6 +44,7 @@ Email address validator with focus-on-error enabled and dynamic display: diff --git a/demos/quickstart/protected/pages/Controls/Samples/TRegularExpressionValidator/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TRegularExpressionValidator/Home.page index 5ce43fda..9c27057b 100644 --- a/demos/quickstart/protected/pages/Controls/Samples/TRegularExpressionValidator/Home.page +++ b/demos/quickstart/protected/pages/Controls/Samples/TRegularExpressionValidator/Home.page @@ -1,8 +1,11 @@

TRegularExpressionValidator Samples

-

Note:TRegularExpressionValidator will start -to validate only if the input is not empty.

+

+Note: TRegularExpressionValidator will start +to validate only if the input is not empty. +

+
@@ -10,12 +13,12 @@ to validate only if the input is not empty.

Regular expression validator with default settings: @@ -30,8 +33,8 @@ Regular expression validator with client-side validation disabled: ValidationGroup="Group2" EnableClientScript="false" ControlToValidate="TextBox2" - RegularExpression="\d+" - Text="Only digits are allowed." /> + RegularExpression="[\w]{6,}" + Text="Input must consist of at least 6 characters." /> @@ -46,8 +49,8 @@ Regular expression validator with focus-on-error enabled and dynamic display: ValidationGroup="Group3" ControlToValidate="TextBox3" Display="Dynamic" - RegularExpression="\d+" - Text="Only digits are allowed." /> + RegularExpression="\d{5}(-\d{4})?" + Text="Invalid US ZIP code." /> diff --git a/demos/quickstart/protected/pages/Controls/Samples/TRequiredFieldValidator/Home.page b/demos/quickstart/protected/pages/Controls/Samples/TRequiredFieldValidator/Home.page index 36d02ced..e5c27cd0 100644 --- a/demos/quickstart/protected/pages/Controls/Samples/TRequiredFieldValidator/Home.page +++ b/demos/quickstart/protected/pages/Controls/Samples/TRequiredFieldValidator/Home.page @@ -6,7 +6,7 @@ + + + + + + + + + + + + + + + + + + +
- + + RegularExpression="\d{3}-\d{2}-\d{4}" + Text="SSN must be in the format of xxx-xx-xxxx." />
-Required field validator with default settings: +Validator with default settings: @@ -20,7 +20,7 @@ Required field validator with default settings:
-Required field validator with client-side validation disabled: +Validator with client-side validation disabled: @@ -35,12 +35,13 @@ Required field validator with client-side validation disabled:
-Required field validator with focus-on-error enabled and dynamic display: +Validator with focus-on-error enabled and dynamic display: @@ -48,6 +49,73 @@ Required field validator with focus-on-error enabled and dynamic display:
+Validating if initial value (test) is changed: + + + + +
+Validating if checkbox is checked: + + + + +
+Validating if a selection has been made in a dropdown list: + + + + + + + + +
+Validating if a selection has been made in a dropdown list: + + + + + + + + +
diff --git a/demos/quickstart/protected/pages/Controls/Validation.page b/demos/quickstart/protected/pages/Controls/Validation.page index 74925447..fe801183 100644 --- a/demos/quickstart/protected/pages/Controls/Validation.page +++ b/demos/quickstart/protected/pages/Controls/Validation.page @@ -12,7 +12,7 @@ In addition, if EnableClientScript is true, validation will also be per
ControlToValidate
The ID of the component for this validator. This property must be set to the ID path of an input component. The ID path is the dot-connected IDs of the components reaching from the validator's parent component to the target component.
- +
ErrorMessage
The text for the error message when the input component failed to validate.
@@ -21,14 +21,14 @@ In addition, if EnableClientScript is true, validation will also be per
Display
-
The display behavior of the error message in a validation component. The allowed values are: None, Static and Dynamic. The default is Static. +
The display behavior of the error message in a validation component. The allowed values are: None, Static and Dynamic. The default is Static.
  • None -- the validator component and the error message will not be displayed.
  • Dynamic -- CSS for the error is constructed in such a way that space for the error message on the page is NOT reserved. When the user hits the "submit" button, applicable error messages will show up shifting the layout of your page around (usually down).
  • Static -- CSS for the error is constructed in such a way that space for the error message on the page is always reserved. When the user hits the "submit" button, applicable error messages will just show up, not altering the layout of your page.
- +
EnableClientScript
Indicating whether client-side validation is enabled. Default is true.
@@ -53,7 +53,6 @@ This is the simplest validator, ensuring that the input field has some sort of v
The regular expression that determines the pattern used to validate a field. Some commonly used regular expressions include: - More regular expression patterns can be found on the Internet, e.g. + More regular expression patterns can be found on the Internet, e.g. http://regexlib.com/.
+

+Note, if the value being validated is empty, TRegularExpressionValidator will not do validation. Use a TRequiredFieldValidator to ensure the value is not empty. +

TEmailAddressValidator

-

TEmailAddressValidator validates whether the value of an associated input component is a valid email address. It will check MX record if checkdnsrr() is available in the installed PHP. +

TEmailAddressValidator validates whether the value of an associated input component is a valid email address. If CheckMXRecord is true, besides checking the format of the input value, the validator will also check MX record for the email address, provided checkdnsrr() is available in the installed PHP. +

+

+Note, if the value being validated is empty, TEmailAddressValidator will not do validation. Use a TRequiredFieldValidator to ensure the value is not empty.

@@ -81,10 +86,10 @@ This is the simplest validator, ensuring that the input field has some sort of v
ControlToCompare
The input component to compare with the input control being validated.
- +
ValueToCompare
A constant value to compare with the value entered by the user into the input component being validated.
- +
ValueType
The data type (Integer, Double, Currency, Date, String) that the values being compared are converted to before the comparison is made.
@@ -104,12 +109,12 @@ This is the simplest validator, ensuring that the input field has some sort of v
Integer
A 32-bit signed integer data type.
-
Double
+
Float
A double-precision floating point number data type.
- +
Currency
A decimal data type that can contain currency symbols.
- +
Date
A date data type, the date format depends on the DateFormat property.
@@ -120,16 +125,24 @@ This is the simplest validator, ensuring that the input field has some sort of v

Use the Operator property to specify the type of comparison to perform. If you set the Operator property to DataTypeCheck, the TCompareValidator component will ignore the ControlToCompare and ValueToCompare properties and simply indicates whether the value entered into the input component can be converted to the data type specified by the ValueType property.

Note that if the input control is empty, no validation functions are called and validation succeeds. Use a RequiredFieldValidator control to require the user to enter data into the input control.

+ +

TRangeValidator

+

+

+ - - +

TValueTypeValidator

+

+

+

TCustomValidator

+

TValidationSummary

diff --git a/framework/Exceptions/messages.txt b/framework/Exceptions/messages.txt index c142d8a6..0734fa1f 100644 --- a/framework/Exceptions/messages.txt +++ b/framework/Exceptions/messages.txt @@ -216,9 +216,9 @@ emaillogroute_sentfrom_required = TEmailLogRoute.SentFrom cannot be empty. repeatinfo_repeatcolumns_invalid = TRepeatInfo.RepeatColumns must be no less than 0. -basevalidator_associatedcontrolid_unsupported = TBaseValidator.AssociatedControlID is not supported. -basevalidator_controltovalidate_invalid = TBaseValidator.ControlToValidate is empty or contains an invalid control ID path. -basevalidator_validatable_required = TBaseValidator.ControlToValidate must point to a control implementing IValidatable interface. +basevalidator_controltovalidate_invalid = %s.ControlToValidate is empty or contains an invalid control ID path. +basevalidator_validatable_required = %s.ControlToValidate must point to a control implementing IValidatable interface. +basevalidator_forcontrol_unsupported = %s.ForControl is not supported. comparevalidator_controltocompare_invalid = TCompareValidator.ControlToCompare contains an invalid control ID path. diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php index 46f031ca..03362110 100644 --- a/framework/Web/UI/WebControls/TBaseValidator.php +++ b/framework/Web/UI/WebControls/TBaseValidator.php @@ -370,7 +370,7 @@ abstract class TBaseValidator extends TLabel implements IValidator if(($id=$this->getControlToValidate())!=='' && ($control=$this->findControl($id))!==null) return $control; else - throw new TConfigurationException('basevalidator_controltovalidate_invalid'); + throw new TConfigurationException('basevalidator_controltovalidate_invalid',get_class($this)); } /** @@ -384,7 +384,7 @@ abstract class TBaseValidator extends TLabel implements IValidator if($control instanceof IValidatable) return $control->getValidationPropertyValue(); else - throw new TInvalidDataTypeException('basevalidator_validatable_required'); + throw new TInvalidDataTypeException('basevalidator_validatable_required',get_class($this)); } /** diff --git a/framework/Web/UI/WebControls/TCompareValidator.php b/framework/Web/UI/WebControls/TCompareValidator.php index 853cff17..9b8dabd5 100644 --- a/framework/Web/UI/WebControls/TCompareValidator.php +++ b/framework/Web/UI/WebControls/TCompareValidator.php @@ -206,7 +206,7 @@ class TCompareValidator extends TBaseValidator return array($value1, $value2); case 'Date': $dateFormat = $this->getDateFormat(); - if (strlen($dateFormat)) + if($dateFormat!=='') { $formatter = Prado::createComponent('System.Data.TSimpleDateFormatter', $dateFormat); return array($formatter->parse($value1), $formatter->parse($value2)); diff --git a/framework/Web/UI/WebControls/TEmailAddressValidator.php b/framework/Web/UI/WebControls/TEmailAddressValidator.php index b6ceff90..3534d1d0 100644 --- a/framework/Web/UI/WebControls/TEmailAddressValidator.php +++ b/framework/Web/UI/WebControls/TEmailAddressValidator.php @@ -19,8 +19,9 @@ Prado::using('System.Web.UI.WebControls.TRegularExpressionValidator'); * TEmailAddressValidator class * * TEmailAddressValidator validates whether the value of an associated - * input component is a valid email address. It will check MX record - * if checkdnsrr() is available in the installed PHP. + * input component is a valid email address. If {@link getCheckMXRecord CheckMXRecord} + * is true, it will check MX record for the email adress, provided + * checkdnsrr() is available in the installed PHP. * * @author Qiang Xue * @version $Revision: $ $Date: $ @@ -50,7 +51,7 @@ class TEmailAddressValidator extends TRegularExpressionValidator public function evaluateIsValid() { $valid=parent::evaluateIsValid(); - if($valid && function_exists('checkdnsrr')) + if($valid && $this->getCheckMXRecord() && function_exists('checkdnsrr')) { if(($value=$this->getValidationValue($this->getValidationTarget()))!=='') { @@ -65,6 +66,23 @@ class TEmailAddressValidator extends TRegularExpressionValidator } return $valid; } + + /** + * @return boolean whether to check MX record for the email address being validated. Defaults to true. + */ + public function getCheckMXRecord() + { + return $this->getViewState('CheckMXRecord',true); + } + + /** + * @param boolean whether to check MX record for the email address being validated. + * Note, if {@link checkdnsrr} is not available, this check will not be performed. + */ + public function setCheckMXRecord($value) + { + $this->setViewState('CheckMXRecord',TPropertyValue::ensureBoolean($value),true); + } } ?> \ No newline at end of file diff --git a/framework/Web/UI/WebControls/TRegularExpressionValidator.php b/framework/Web/UI/WebControls/TRegularExpressionValidator.php index f20c2d16..4271c820 100644 --- a/framework/Web/UI/WebControls/TRegularExpressionValidator.php +++ b/framework/Web/UI/WebControls/TRegularExpressionValidator.php @@ -29,7 +29,6 @@ Prado::using('System.Web.UI.WebControls.TBaseValidator'); * German Phone Number: ((\(0\d\d\) |(\(0\d{3}\) )?\d )?\d\d \d\d \d\d|\(0\d{4}\) \d \d\d-\d\d?) * German Postal Code: (D-)?\d{5} * Email Address: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* - * Internal URL: http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? * Japanese Phone Number: (0\d{1,4}-|\(0\d{1,4}\) ?)?\d{1,4}-\d{4} * Japanese Postal Code: \d{3}(-(\d{4}|\d{2}))? * P.R.C. Phone Number: (\(\d{3}\)|\d{3}-)?\d{8} diff --git a/framework/Web/UI/WebControls/TValueTypeValidator.php b/framework/Web/UI/WebControls/TValueTypeValidator.php index ca4a01ca..8b5d7bbc 100644 --- a/framework/Web/UI/WebControls/TValueTypeValidator.php +++ b/framework/Web/UI/WebControls/TValueTypeValidator.php @@ -1,14 +1,29 @@ + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Revision: $ $Date: $ + * @package System.Web.UI.WebControls + */ /** - * TRequiredValueTypeValidator class. + * Using TBaseValidator class + */ +Prado::using('System.Web.UI.WebControls.TBaseValidator'); + +/** + * TValueTypeValidator class * * @author Wei Zhuo * @version $Revision: $ $Date: $ * @package System.Web.UI.WebControls * @since 3.0 */ -class TValueTypeValidator +class TValueTypeValidator extends TBaseValidator { /** * @return string the data type that the values being compared are converted to before the comparison is made. Defaults to String. @@ -72,7 +87,7 @@ class TValueTypeValidator return strtotime($value) > 0; } return true; - } + } /** * This method overrides the parent's implementation. -- cgit v1.2.3