From 5727368622971dfc824b0292cca9a3caaf4ae4a0 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Sun, 19 Oct 2014 21:50:04 -0400 Subject: [PATCH] Fix up tests for nested input/labels. Fixup nested inputs and add a new test showing how you can update the templates to have non-nested inputs. --- src/View/Helper/FormHelper.php | 7 +- src/View/Widget/NestingLabel.php | 34 +++++ tests/TestCase/View/Helper/FormHelperTest.php | 142 +++++++++++------- 3 files changed, 123 insertions(+), 60 deletions(-) create mode 100644 src/View/Widget/NestingLabel.php diff --git a/src/View/Helper/FormHelper.php b/src/View/Helper/FormHelper.php index 59f15414c6d..bf55639e41c 100644 --- a/src/View/Helper/FormHelper.php +++ b/src/View/Helper/FormHelper.php @@ -80,7 +80,7 @@ class FormHelper extends Helper { 'button' => '{{text}}', 'checkbox' => '', 'checkboxFormGroup' => '{{label}}', - 'checkboxWrapper' => '
{{input}}{{label}}
', + 'checkboxWrapper' => '
{{label}}
', 'dateWidget' => '{{year}}{{month}}{{day}}{{hour}}{{minute}}{{second}}{{meridian}}', 'error' => '
{{content}}
', 'errorList' => '', @@ -923,10 +923,10 @@ public function input($fieldName, array $options = []) { } $label = $options['label']; + unset($options['label']); $nestedInput = false; if (in_array($options['type'], ['radio', 'checkbox'], true)) { $nestedInput = true; - unset($options['label']); } $nestedInput = isset($options['nestedInput']) ? $options['nestedInput'] : $nestedInput; @@ -1179,6 +1179,9 @@ protected function _getLabel($fieldName, $options) { $label = $options['label']; } + if ($label === false && isset($options['input'])) { + return $options['input']; + } if ($label === false) { return false; } diff --git a/src/View/Widget/NestingLabel.php b/src/View/Widget/NestingLabel.php new file mode 100644 index 00000000000..36c1376a47d --- /dev/null +++ b/src/View/Widget/NestingLabel.php @@ -0,0 +1,34 @@ +Form->input('something', array('type' => 'checkbox')); $expected = array( 'div' => array('class' => 'input checkbox'), + 'label' => array('for' => 'something'), array('input' => array( 'type' => 'hidden', 'name' => 'something', @@ -1410,7 +1411,6 @@ public function testFormSecuredInput() { 'value' => '1', 'id' => 'something' )), - 'label' => array('for' => 'something'), 'Something', '/label', '/div' @@ -2188,13 +2188,13 @@ public function testCreateIdPrefix() { $result = $this->Form->radio('Model.field', ['option A']); $expected = [ 'input' => ['type' => 'hidden', 'name' => 'Model[field]', 'value' => ''], + 'label' => ['for' => 'prefix-model-field-0'], ['input' => [ 'type' => 'radio', 'name' => 'Model[field]', 'value' => '0', 'id' => 'prefix-model-field-0' ]], - 'label' => ['for' => 'prefix-model-field-0'], 'option A', '/label' ]; @@ -2203,13 +2203,13 @@ public function testCreateIdPrefix() { $result = $this->Form->radio('Model.field', ['option A', 'option']); $expected = [ 'input' => ['type' => 'hidden', 'name' => 'Model[field]', 'value' => ''], + 'label' => ['for' => 'prefix-model-field-0'], ['input' => [ 'type' => 'radio', 'name' => 'Model[field]', 'value' => '0', 'id' => 'prefix-model-field-0' ]], - 'label' => ['for' => 'prefix-model-field-0'], 'option A', '/label' ]; @@ -2225,11 +2225,11 @@ public function testCreateIdPrefix() { 'type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => '' ], ['div' => ['class' => 'checkbox']], + ['label' => ['for' => 'prefix-model-multi-field-0']], ['input' => [ 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '0', 'id' => 'prefix-model-multi-field-0' ]], - ['label' => ['for' => 'prefix-model-multi-field-0']], 'first', '/label', '/div', @@ -2309,6 +2309,7 @@ public function testInputCheckbox() { )); $expected = array( 'div' => array('class' => 'input checkbox'), + 'label' => array('for' => 'user-disabled'), 'input' => array('type' => 'hidden', 'name' => 'User[disabled]', 'value' => '0'), array('input' => array( 'type' => 'checkbox', @@ -2317,7 +2318,6 @@ public function testInputCheckbox() { 'id' => 'user-disabled', 'data-foo' => 'disabled' )), - 'label' => array('for' => 'user-disabled'), 'Disabled', '/label', '/div' @@ -2450,20 +2450,20 @@ public function testInputCheckboxWithDisabledElements() { '/label', array('input' => array('type' => 'hidden', 'name' => "Contact[multiple]", 'value' => '')), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 1, 'disabled' => 'disabled', 'id' => "contact-multiple-1")), array('label' => array('for' => "contact-multiple-1")), + array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 1, 'disabled' => 'disabled', 'id' => "contact-multiple-1")), 'One', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 2, 'disabled' => 'disabled', 'id' => "contact-multiple-2")), array('label' => array('for' => "contact-multiple-2")), + array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 2, 'disabled' => 'disabled', 'id' => "contact-multiple-2")), 'Two', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 3, 'disabled' => 'disabled', 'id' => "contact-multiple-3")), array('label' => array('for' => "contact-multiple-3")), + array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 3, 'disabled' => 'disabled', 'id' => "contact-multiple-3")), 'Three', '/label', '/div', @@ -2482,14 +2482,14 @@ public function testInputCheckboxWithDisabledElements() { '/label', array('input' => array('type' => 'hidden', 'name' => "Contact[multiple]", 'value' => '')), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 50, 'disabled' => 'disabled', 'id' => "contact-multiple-50")), array('label' => array('for' => "contact-multiple-50")), + array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => 50, 'disabled' => 'disabled', 'id' => "contact-multiple-50")), 'Fifty', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => '50f5c0cf', 'id' => "contact-multiple-50f5c0cf")), array('label' => array('for' => "contact-multiple-50f5c0cf")), + array('input' => array('type' => 'checkbox', 'name' => "Contact[multiple][]", 'value' => '50f5c0cf', 'id' => "contact-multiple-50f5c0cf")), 'Stringy', '/label', '/div', @@ -2652,14 +2652,14 @@ public function testInputSelectType() { '/label', 'input' => array('type' => 'hidden', 'name' => 'Publisher[id]', 'value' => ''), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Publisher[id][]', 'value' => 'Value 1', 'id' => 'publisher-id-value-1')), array('label' => array('for' => 'publisher-id-value-1')), + array('input' => array('type' => 'checkbox', 'name' => 'Publisher[id][]', 'value' => 'Value 1', 'id' => 'publisher-id-value-1')), 'Label 1', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Publisher[id][]', 'value' => 'Value 2', 'id' => 'publisher-id-value-2')), array('label' => array('for' => 'publisher-id-value-2')), + array('input' => array('type' => 'checkbox', 'name' => 'Publisher[id][]', 'value' => 'Value 2', 'id' => 'publisher-id-value-2')), 'Label 2', '/label', '/div', @@ -2738,6 +2738,7 @@ public function testInputMagicTypeDoesNotOverride() { $result = $this->Form->input('Model.user', array('type' => 'checkbox')); $expected = array( 'div' => array('class' => 'input checkbox'), + 'label' => array('for' => 'model-user'), array('input' => array( 'type' => 'hidden', 'name' => 'Model[user]', @@ -2749,7 +2750,8 @@ public function testInputMagicTypeDoesNotOverride() { 'id' => 'model-user', 'value' => 1 )), - 'label' => array('for' => 'model-user'), 'User', '/label', + 'User', + '/label', '/div' ); $this->assertHtml($expected, $result); @@ -2989,20 +2991,20 @@ public function testSelectAsCheckbox() { $expected = array( 'input' => array('type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => ''), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'checked' => 'checked', 'value' => '0', 'id' => 'model-multi-field-0')), array('label' => array('for' => 'model-multi-field-0', 'class' => 'selected')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'checked' => 'checked', 'value' => '0', 'id' => 'model-multi-field-0')), 'first', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'checked' => 'checked', 'value' => '1', 'id' => 'model-multi-field-1')), array('label' => array('for' => 'model-multi-field-1', 'class' => 'selected')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'checked' => 'checked', 'value' => '1', 'id' => 'model-multi-field-1')), 'second', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '2', 'id' => 'model-multi-field-2')), array('label' => array('for' => 'model-multi-field-2')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '2', 'id' => 'model-multi-field-2')), 'third', '/label', '/div', @@ -3017,8 +3019,8 @@ public function testSelectAsCheckbox() { $expected = array( 'input' => array('type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => ''), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '1/2', 'id' => 'model-multi-field-1-2')), array('label' => array('for' => 'model-multi-field-1-2')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '1/2', 'id' => 'model-multi-field-1-2')), 'half', '/label', '/div', @@ -3287,8 +3289,8 @@ public function testRadio() { $result = $this->Form->radio('Model.field', array('option A')); $expected = array( 'input' => array('type' => 'hidden', 'name' => 'Model[field]', 'value' => ''), - array('input' => array('type' => 'radio', 'name' => 'Model[field]', 'value' => '0', 'id' => 'model-field-0')), 'label' => array('for' => 'model-field-0'), + array('input' => array('type' => 'radio', 'name' => 'Model[field]', 'value' => '0', 'id' => 'model-field-0')), 'option A', '/label' ); @@ -3300,12 +3302,12 @@ public function testRadio() { $result = $this->Form->radio('Model.field', array('option A', 'option B')); $expected = array( 'input' => array('type' => 'hidden', 'name' => 'Model[field]', 'value' => ''), - array('input' => array('type' => 'radio', 'name' => 'Model[field]', 'value' => '0', 'id' => 'model-field-0')), array('label' => array('for' => 'model-field-0')), + array('input' => array('type' => 'radio', 'name' => 'Model[field]', 'value' => '0', 'id' => 'model-field-0')), 'option A', '/label', - array('input' => array('type' => 'radio', 'name' => 'Model[field]', 'value' => '1', 'id' => 'model-field-1')), array('label' => array('for' => 'model-field-1')), + array('input' => array('type' => 'radio', 'name' => 'Model[field]', 'value' => '1', 'id' => 'model-field-1')), 'option B', '/label', ); @@ -3318,12 +3320,12 @@ public function testRadio() { ); $expected = array( 'input' => array('type' => 'hidden', 'name' => 'Employee[gender]', 'value' => '', 'form' => 'my-form'), - array('input' => array('type' => 'radio', 'name' => 'Employee[gender]', 'value' => 'male', 'id' => 'employee-gender-male', 'form' => 'my-form')), array('label' => array('for' => 'employee-gender-male')), + array('input' => array('type' => 'radio', 'name' => 'Employee[gender]', 'value' => 'male', 'id' => 'employee-gender-male', 'form' => 'my-form')), 'Male', '/label', - array('input' => array('type' => 'radio', 'name' => 'Employee[gender]', 'value' => 'female', 'id' => 'employee-gender-female', 'form' => 'my-form')), array('label' => array('for' => 'employee-gender-female')), + array('input' => array('type' => 'radio', 'name' => 'Employee[gender]', 'value' => 'female', 'id' => 'employee-gender-female', 'form' => 'my-form')), 'Female', '/label', ); @@ -3332,12 +3334,12 @@ public function testRadio() { $result = $this->Form->radio('Model.field', array('option A', 'option B'), array('name' => 'Model[custom]')); $expected = array( array('input' => array('type' => 'hidden', 'name' => 'Model[custom]', 'value' => '')), - array('input' => array('type' => 'radio', 'name' => 'Model[custom]', 'value' => '0', 'id' => 'model-custom-0')), array('label' => array('for' => 'model-custom-0')), + array('input' => array('type' => 'radio', 'name' => 'Model[custom]', 'value' => '0', 'id' => 'model-custom-0')), 'option A', '/label', - array('input' => array('type' => 'radio', 'name' => 'Model[custom]', 'value' => '1', 'id' => 'model-custom-1')), array('label' => array('for' => 'model-custom-1')), + array('input' => array('type' => 'radio', 'name' => 'Model[custom]', 'value' => '1', 'id' => 'model-custom-1')), 'option B', '/label', ); @@ -3392,8 +3394,8 @@ public function testRadioInputInsideLabel() { public function testRadioHiddenInputDisabling() { $result = $this->Form->radio('Model.1.field', array('option A'), array('hiddenField' => false)); $expected = array( - 'input' => array('type' => 'radio', 'name' => 'Model[1][field]', 'value' => '0', 'id' => 'model-1-field-0'), 'label' => array('for' => 'model-1-field-0'), + 'input' => array('type' => 'radio', 'name' => 'Model[1][field]', 'value' => '0', 'id' => 'model-1-field-0'), 'option A', '/label' ); @@ -3666,6 +3668,7 @@ public function testCheckboxZeroValue() { )); $expected = array( 'div' => array('class' => 'input checkbox'), + 'label' => array('for' => 'user-get-spam'), array('input' => array( 'type' => 'hidden', 'name' => 'User[get_spam]', 'value' => '1' @@ -3674,7 +3677,6 @@ public function testCheckboxZeroValue() { 'type' => 'checkbox', 'name' => 'User[get_spam]', 'value' => '0', 'id' => 'user-get-spam' )), - 'label' => array('for' => 'user-get-spam'), 'Get Spam', '/label', '/div' @@ -3780,29 +3782,29 @@ public function testSelectMultipleCheckboxes() { 'type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => '' ), array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-0')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '0', 'id' => 'model-multi-field-0' )), - array('label' => array('for' => 'model-multi-field-0')), 'first', '/label', '/div', array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-1')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '1', 'id' => 'model-multi-field-1' )), - array('label' => array('for' => 'model-multi-field-1')), 'second', '/label', '/div', array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-2')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '2', 'id' => 'model-multi-field-2' )), - array('label' => array('for' => 'model-multi-field-2')), 'third', '/label', '/div' @@ -3819,29 +3821,29 @@ public function testSelectMultipleCheckboxes() { 'type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => '' ), array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-a+')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a+', 'id' => 'model-multi-field-a+' )), - array('label' => array('for' => 'model-multi-field-a+')), 'first', '/label', '/div', array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-a++')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a++', 'id' => 'model-multi-field-a++' )), - array('label' => array('for' => 'model-multi-field-a++')), 'second', '/label', '/div', array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-a+++')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a+++', 'id' => 'model-multi-field-a+++' )), - array('label' => array('for' => 'model-multi-field-a+++')), 'third', '/label', '/div' @@ -3858,29 +3860,29 @@ public function testSelectMultipleCheckboxes() { 'type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => '' ), array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-a-b')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a>b', 'id' => 'model-multi-field-a-b' )), - array('label' => array('for' => 'model-multi-field-a-b')), 'first', '/label', '/div', array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-a-b1')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a<b', 'id' => 'model-multi-field-a-b1' )), - array('label' => array('for' => 'model-multi-field-a-b1')), 'second', '/label', '/div', array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-multi-field-a-b2')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a"b', 'id' => 'model-multi-field-a-b2' )), - array('label' => array('for' => 'model-multi-field-a-b2')), 'third', '/label', '/div' @@ -3903,21 +3905,21 @@ public function testSelectMultipleCheckboxRequestData() { 'type' => 'hidden', 'name' => 'Model[tags]', 'value' => '' ), array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-tags-1', 'class' => 'selected')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[tags][]', 'value' => '1', 'id' => 'model-tags-1', 'checked' => 'checked' )), - array('label' => array('for' => 'model-tags-1', 'class' => 'selected')), 'first', '/label', '/div', array('div' => array('class' => 'checkbox')), + array('label' => array('for' => 'model-tags-array')), array('input' => array( 'type' => 'checkbox', 'name' => 'Model[tags][]', 'value' => 'Array', 'id' => 'model-tags-array' )), - array('label' => array('for' => 'model-tags-array')), 'Array', '/label', '/div' @@ -4005,20 +4007,20 @@ public function testInputMultipleCheckboxes() { '/label', 'input' => array('type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => ''), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '0', 'id' => 'model-multi-field-0')), array('label' => array('for' => 'model-multi-field-0')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '0', 'id' => 'model-multi-field-0')), 'first', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '1', 'id' => 'model-multi-field-1')), array('label' => array('for' => 'model-multi-field-1')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '1', 'id' => 'model-multi-field-1')), 'second', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '2', 'id' => 'model-multi-field-2')), array('label' => array('for' => 'model-multi-field-2')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => '2', 'id' => 'model-multi-field-2')), 'third', '/label', '/div', @@ -4037,20 +4039,20 @@ public function testInputMultipleCheckboxes() { '/label', 'input' => array('type' => 'hidden', 'name' => 'Model[multi_field]', 'value' => ''), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a', 'id' => 'model-multi-field-a')), array('label' => array('for' => 'model-multi-field-a')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'a', 'id' => 'model-multi-field-a')), 'first', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'b', 'id' => 'model-multi-field-b')), array('label' => array('for' => 'model-multi-field-b')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'b', 'id' => 'model-multi-field-b')), 'second', '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'c', 'id' => 'model-multi-field-c')), array('label' => array('for' => 'model-multi-field-c')), + array('input' => array('type' => 'checkbox', 'name' => 'Model[multi_field][]', 'value' => 'c', 'id' => 'model-multi-field-c')), 'third', '/label', '/div', @@ -4087,12 +4089,16 @@ public function testSelectCheckboxMultipleOverrideName() { $expected = array( 'input' => array('type' => 'hidden', 'name' => 'fish', 'value' => ''), array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'fish[]', 'value' => '0', 'id' => 'fish-0')), - array('label' => array('for' => 'fish-0')), '1', '/label', + array('label' => array('for' => 'fish-0')), + array('input' => array('type' => 'checkbox', 'name' => 'fish[]', 'value' => '0', 'id' => 'fish-0')), + '1', + '/label', '/div', array('div' => array('class' => 'checkbox')), - array('input' => array('type' => 'checkbox', 'name' => 'fish[]', 'value' => '1', 'id' => 'fish-1')), - array('label' => array('for' => 'fish-1')), '2', '/label', + array('label' => array('for' => 'fish-1')), + array('input' => array('type' => 'checkbox', 'name' => 'fish[]', 'value' => '1', 'id' => 'fish-1')), + '2', + '/label', '/div' ); $this->assertHtml($expected, $result); @@ -6204,24 +6210,44 @@ public function testRequiredAttribute() { } /** - * Tests that it is possible to nest inputs inside labels + * Tests that it is possible to put inputs outside of the label * * @return void */ - public function testNestInputInLabel() { + public function testInputsNotNested() { $this->Form->templates([ - 'label' => '{{text}}{{input}}', - 'formGroup' => '{{label}}' + 'nestingLabel' => '{{input}}{{text}}', + 'formGroup' => '{{input}}{{label}}', ]); - $result = $this->Form->input('foo'); - $expected = array( - 'div' => array('class' => 'input text'), - 'label' => array('for' => 'foo'), + $result = $this->Form->input('foo', ['type' => 'checkbox']); + $expected = [ + 'div' => ['class' => 'input checkbox'], + ['input' => ['type' => 'hidden', 'name' => 'foo', 'value' => '0']], + ['input' => ['type' => 'checkbox', 'name' => 'foo', 'id' => 'foo', 'value' => '1']], + 'label' => ['for' => 'foo'], 'Foo', - 'input' => array('type' => 'text', 'name' => 'foo', 'id' => 'foo'), '/label', '/div' - ); + ]; + $this->assertHtml($expected, $result); + + $result = $this->Form->input('confirm', [ + 'type' => 'radio', + 'options' => ['Y' => 'Yes', 'N' => 'No'] + ]); + $expected = [ + 'div' => ['class' => 'input radio'], + ['input' => ['type' => 'hidden', 'name' => 'confirm', 'value' => '']], + ['input' => ['type' => 'radio', 'name' => 'confirm', 'id' => 'confirm-y', 'value' => 'Y']], + ['label' => ['for' => 'confirm-y']], + 'Yes', + '/label', + ['input' => ['type' => 'radio', 'name' => 'confirm', 'id' => 'confirm-n', 'value' => 'N']], + ['label' => ['for' => 'confirm-n']], + 'No', + '/label', + '/div', + ]; $this->assertHtml($expected, $result); } @@ -6248,9 +6274,9 @@ public function testInputContainerTemplates() { ]); $expected = [ 'div' => ['class' => 'check'], + 'label' => ['for' => 'accept'], ['input' => ['type' => 'hidden', 'name' => 'accept', 'value' => 0]], ['input' => ['id' => 'accept', 'type' => 'checkbox', 'name' => 'accept', 'value' => 1]], - 'label' => ['for' => 'accept'], 'Accept', '/label', '/div'