Browse Source

Merge pull request #6895 from cakephp/issue-6894

Fix multi-checkboxes not being selected properly.
José Lorenzo Rodríguez 10 years ago
parent
commit
d658891a5a

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

@@ -127,10 +127,10 @@ 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'])) {
+            if ($this->_isDisabled($checkbox['value'], $data['disabled'])) {
                 $checkbox['disabled'] = true;
             }
             if (empty($checkbox['id'])) {

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

@@ -97,6 +97,8 @@ class MultiCheckboxWidgetTest extends TestCase
         $input = new MultiCheckboxWidget($this->templates, $label);
         $data = [
             'name' => 'Tags[id]',
+            'val' => 2,
+            'disabled' => ['1'],
             'options' => [
                 ['value' => '1', 'text' => 'CakePHP', 'data-test' => 'val'],
                 ['value' => '2', 'text' => 'Development', 'class' => 'custom'],
@@ -106,6 +108,7 @@ class MultiCheckboxWidgetTest extends TestCase
         $expected = [
             ['div' => ['class' => 'checkbox']],
             ['input' => [
+                'disabled' => 'disabled',
                 'type' => 'checkbox',
                 'name' => 'Tags[id][]',
                 'value' => 1,
@@ -119,12 +122,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',