From 0ca5c11e6ca2dd356ca9416f570ba38ae27ee337 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Lorenzo=20Rodr=C3=ADguez?= Date: Sat, 27 Feb 2010 22:58:27 -0430 Subject: [PATCH] Making the form helper put the "required" class on all imputs that have a validation rule and does not explicitly sets allowEmpty => true in validation array --- cake/libs/view/helpers/form.php | 11 ++++------- cake/tests/cases/libs/view/helpers/form.test.php | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/cake/libs/view/helpers/form.php b/cake/libs/view/helpers/form.php index b7fd988730c..4ec6961cde4 100755 --- a/cake/libs/view/helpers/form.php +++ b/cake/libs/view/helpers/form.php @@ -152,14 +152,11 @@ function _isRequiredField($validateProperties) { } foreach ($validateProperties as $rule => $validateProp) { - $rule = isset($validateProp['rule']) ? $validateProp['rule'] : false; - if ($rule) { - $rule = is_array($rule) ? array_shift($rule) : $rule; - $rule = is_string($rule) ? strtolower($rule) : $rule; + if (isset($validateProp['allowEmpty']) && $validateProp['allowEmpty'] === true) { + return false; } - $required = empty($validateProp); - $required = $required || (!empty($rule) && $rule === 'notempty'); - $required = $required || (isset($validateProp['allowEmpty']) && $validateProp['allowEmpty'] !== true); + $rule = isset($validateProp['rule']) ? $validateProp['rule'] : false; + $required = $rule || empty($validateProp); if ($required) { break; } diff --git a/cake/tests/cases/libs/view/helpers/form.test.php b/cake/tests/cases/libs/view/helpers/form.test.php index 61e3cd9c9ce..0a826d2619f 100644 --- a/cake/tests/cases/libs/view/helpers/form.test.php +++ b/cake/tests/cases/libs/view/helpers/form.test.php @@ -108,7 +108,7 @@ class Contact extends CakeTestModel { 'imalsorequired' => array('rule' => 'alphaNumeric', 'allowEmpty' => false), 'imrequiredtoo' => array('rule' => 'notEmpty'), 'required_one' => array('required' => array('rule' => array('notEmpty'))), - 'imnotrequired' => array('required' => false, 'rule' => 'alphaNumeric'), + 'imnotrequired' => array('required' => false, 'rule' => 'alphaNumeric', 'allowEmpty' => true), 'imalsonotrequired' => array('alpha' => array('rule' => 'alphaNumeric','allowEmpty' => true), 'between' => array('rule' => array('between', 5, 30))));