Browse Source

Fix multi-checkboxes not being selected properly.

When rendering with complex options checkboxes were not being selected
correctly.

Refs #6894
mark_story 10 years ago
parent
commit
ece39d147e

+ 1 - 1
src/View/Widget/MultiCheckboxWidget.php

@@ -127,7 +127,7 @@ class MultiCheckboxWidget implements WidgetInterface
             $checkbox['name'] = $data['name'];
             $checkbox['escape'] = $data['escape'];
 
-            if ($this->_isSelected($key, $data['val'])) {
+            if ($this->_isSelected($checkbox['value'], $data['val'])) {
                 $checkbox['checked'] = true;
             }
             if ($this->_isDisabled($key, $data['disabled'])) {

+ 3 - 1
tests/TestCase/View/Widget/MultiCheckboxWidgetTest.php

@@ -97,6 +97,7 @@ class MultiCheckboxWidgetTest extends TestCase
         $input = new MultiCheckboxWidget($this->templates, $label);
         $data = [
             'name' => 'Tags[id]',
+            'val' => 2,
             'options' => [
                 ['value' => '1', 'text' => 'CakePHP', 'data-test' => 'val'],
                 ['value' => '2', 'text' => 'Development', 'class' => 'custom'],
@@ -119,12 +120,13 @@ class MultiCheckboxWidgetTest extends TestCase
             ['div' => ['class' => 'checkbox']],
             ['input' => [
                 'type' => 'checkbox',
+                'checked' => 'checked',
                 'name' => 'Tags[id][]',
                 'value' => 2,
                 'id' => 'tags-id-2',
                 'class' => 'custom',
             ]],
-            ['label' => ['for' => 'tags-id-2']],
+            ['label' => ['class' => 'selected', 'for' => 'tags-id-2']],
             'Development',
             '/label',
             '/div',