diff --git a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php index 7c9f70cc8..2fe621ff8 100644 --- a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php @@ -10734,4 +10734,72 @@ class FormHelperTest extends CakeTestCase { $this->assertAttributeEquals($here, '_lastAction', $this->Form, "_lastAction shouldn't be empty."); } +/** + * Tests the 'errorClass' option when error is returned. + * + * @return void + */ + public function testInputErrorClass() { + $Contact = ClassRegistry::getObject('Contact'); + $Contact->validationErrors['field'] = array('Badness!'); + + $result = $this->Form->input('Contact.field', array( + 'type' => 'text', + 'div' => array('errorClass' => 'has-error') + )); + $expected = array( + 'div' => array('class' => 'input text has-error'), + 'label' => array('for' => 'ContactField'), + 'Field', + '/label', + 'input' => array( + 'type' => 'text', 'name' => 'data[Contact][field]', + 'id' => 'ContactField', 'class' => 'form-error' + ), + array('div' => array('class' => 'error-message')), + 'Badness!', + '/div' + ); + $this->assertTags($result, $expected); + + $result = $this->Form->input('Contact.field', array( + 'type' => 'text', + 'error' => array('attributes' => array('class' => 'error')) + )); + $expected = array( + 'div' => array('class' => 'input text error'), + 'label' => array('for' => 'ContactField'), + 'Field', + '/label', + 'input' => array( + 'type' => 'text', 'name' => 'data[Contact][field]', + 'id' => 'ContactField', 'class' => 'form-error' + ), + array('div' => array('class' => 'error')), + 'Badness!', + '/div' + ); + $this->assertTags($result, $expected); + + $result = $this->Form->input('Contact.field', array( + 'type' => 'text', + 'div' => array('errorClass' => 'has-error'), + 'error' => array('attributes' => array('class' => 'form-control-feedback')) + )); + $expected = array( + 'div' => array('class' => 'input text has-error'), + 'label' => array('for' => 'ContactField'), + 'Field', + '/label', + 'input' => array( + 'type' => 'text', 'name' => 'data[Contact][field]', + 'id' => 'ContactField', 'class' => 'form-error' + ), + array('div' => array('class' => 'form-control-feedback')), + 'Badness!', + '/div' + ); + $this->assertTags($result, $expected); + } + } diff --git a/lib/Cake/View/Helper/FormHelper.php b/lib/Cake/View/Helper/FormHelper.php index 0d6dd7dd5..810d5a358 100644 --- a/lib/Cake/View/Helper/FormHelper.php +++ b/lib/Cake/View/Helper/FormHelper.php @@ -1068,7 +1068,7 @@ class FormHelper extends AppHelper { if ($type !== 'hidden' && $error !== false) { $errMsg = $this->error($fieldName, $error); if ($errMsg) { - $divOptions = $this->addClass($divOptions, 'error'); + $divOptions = $this->addClass($divOptions, Hash::get($divOptions, 'errorClass', 'error')); if ($errorMessage) { $out['error'] = $errMsg; } @@ -1088,7 +1088,7 @@ class FormHelper extends AppHelper { if (!empty($divOptions['tag'])) { $tag = $divOptions['tag']; - unset($divOptions['tag']); + unset($divOptions['tag'], $divOptions['errorClass']); $output = $this->Html->tag($tag, $output, $divOptions); } return $output;