Quellcode durchsuchen

fixes issue ZF-5256. checkbox value converted to string like checkedOptions are. also fixed bug with determineCheckboxInfo. was using wrong index for checked/unchecked values.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18626 44c647ce-9c0f-0410-b52a-842ac1e357ba
klassicd vor 16 Jahren
Ursprung
Commit
50c51ac89f

+ 9 - 9
library/Zend/View/Helper/FormCheckbox.php

@@ -118,19 +118,19 @@ class Zend_View_Helper_FormCheckbox extends Zend_View_Helper_FormElement
         $checkedValue   = null;
         $uncheckedValue = null;
         if (is_array($checkedOptions)) {
-            if (array_key_exists('checkedValue', $checkedOptions)) {
-                $checkedValue = (string) $checkedOptions['checkedValue'];
-                unset($checkedOptions['checkedValue']);
+            if (array_key_exists('checked', $checkedOptions)) {
+                $checkedValue = (string) $checkedOptions['checked'];
+                unset($checkedOptions['checked']);
             }
-            if (array_key_exists('uncheckedValue', $checkedOptions)) {
-                $uncheckedValue = (string) $checkedOptions['uncheckedValue'];
-                unset($checkedOptions['uncheckedValue']);
+            if (array_key_exists('unChecked', $checkedOptions)) {
+                $uncheckedValue = (string) $checkedOptions['unChecked'];
+                unset($checkedOptions['unChecked']);
             }
             if (null === $checkedValue) {
-                $checkedValue = array_shift($checkedOptions);
+                $checkedValue = (string) array_shift($checkedOptions);
             }
             if (null === $uncheckedValue) {
-                $uncheckedValue = array_shift($checkedOptions);
+                $uncheckedValue = (string) array_shift($checkedOptions);
             }
         } elseif ($value !== null) {
             $uncheckedValue = self::$_defaultCheckedOptions['uncheckedValue'];
@@ -141,7 +141,7 @@ class Zend_View_Helper_FormCheckbox extends Zend_View_Helper_FormElement
 
         // is the element checked?
         $checkedString = '';
-        if ($checked || ($value === $checkedValue)) {
+        if ($checked || ((string) $value === $checkedValue)) {
             $checkedString = ' checked="checked"';
             $checked = true;
         } else {

+ 15 - 0
tests/Zend/View/Helper/FormCheckboxTest.php

@@ -283,6 +283,21 @@ class Zend_View_Helper_FormCheckboxTest extends PHPUnit_Framework_TestCase
        $test = $this->helper->formCheckbox('foo', 'bar', array('disable' => true));
        $this->assertNotContains('type="hidden"', $test);
    }
+   
+   public function testIntValueIsChecked()
+   {
+       $test = $this->helper->formCheckbox('foo', '1', array(), array('checked'=>1, 'unchecked'=>0));
+       $this->assertContains('checked="checked"', $test);
+       
+       $test = $this->helper->formCheckbox('foo', '1', array(), array(1,0));
+       $this->assertContains('checked="checked"', $test);
+       
+       $test = $this->helper->formCheckbox('foo', 1, array(), array('checked'=>1, 'unchecked'=>0));
+       $this->assertContains('checked="checked"', $test);
+       
+       $test = $this->helper->formCheckbox('foo', 1, array(), array(1,0));
+       $this->assertContains('checked="checked"', $test);
+   }
 }
 
 // Call Zend_View_Helper_FormCheckboxTest::main() if this source file is executed directly.