瀏覽代碼

ZF-5609: Fix issues with checkbox values and how they are passed to view helper

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17715 44c647ce-9c0f-0410-b52a-842ac1e357ba
matthew 16 年之前
父節點
當前提交
481cefbf90

+ 11 - 17
library/Zend/Dojo/Form/Element/CheckBox.php

@@ -49,6 +49,15 @@ class Zend_Dojo_Form_Element_CheckBox extends Zend_Dojo_Form_Element_Dijit
     public $helper = 'CheckBox';
 
     /**
+     * Options that will be passed to the view helper
+     * @var array
+     */
+    public $options = array(
+        'checkedValue'   => '1',
+        'uncheckedValue' => '0',
+    );
+
+    /**
      * Value when checked
      * @var string
      */
@@ -130,6 +139,7 @@ class Zend_Dojo_Form_Element_CheckBox extends Zend_Dojo_Form_Element_Dijit
     public function setCheckedValue($value)
     {
         $this->_checkedValue = (string) $value;
+        $this->options['checkedValue'] = $value;
         return $this;
     }
 
@@ -152,6 +162,7 @@ class Zend_Dojo_Form_Element_CheckBox extends Zend_Dojo_Form_Element_Dijit
     public function setUncheckedValue($value)
     {
         $this->_uncheckedValue = (string) $value;
+        $this->options['uncheckedValue'] = $value;
         return $this;
     }
 
@@ -191,22 +202,5 @@ class Zend_Dojo_Form_Element_CheckBox extends Zend_Dojo_Form_Element_Dijit
     {
         return $this->checked;
     }
-
-    /**
-     * Render
-     *
-     * Ensure that options property is set when rendering.
-     *
-     * @param  Zend_View_Interface $view
-     * @return string
-     */
-    public function render(Zend_View_Interface $view = null)
-    {
-        $this->options = array(
-            'checked'   => $this->getCheckedValue(),
-            'unChecked' => $this->getUncheckedValue(),
-        );
-        return parent::render($view);
-    }
 }
 

+ 2 - 2
library/Zend/Dojo/View/Helper/CheckBox.php

@@ -59,7 +59,7 @@ class Zend_Dojo_View_Helper_CheckBox extends Zend_Dojo_View_Helper_Dijit
      * @param  string $content
      * @param  array $params  Parameters to use for dijit creation
      * @param  array $attribs HTML attributes
-     * @param  array $checkedOptions Should contain either two items, or the keys checkedValue and unCheckedValue
+     * @param  array $checkedOptions Should contain either two items, or the keys checkedValue and uncheckedValue
      * @return string
      */
     public function checkBox($id, $value = null, array $params = array(), array $attribs = array(), array $checkedOptions = null)
@@ -89,7 +89,7 @@ class Zend_Dojo_View_Helper_CheckBox extends Zend_Dojo_View_Helper_Dijit
         $html = '';
         if (!strstr($id, '[]')) {
             // hidden element for unchecked value
-            $html .= $this->_renderHiddenElement($id, $checkboxInfo['unCheckedValue']);
+            $html .= $this->_renderHiddenElement($id, $checkboxInfo['uncheckedValue']);
         }
 
         // and final element

+ 11 - 17
library/Zend/Form/Element/Checkbox.php

@@ -47,6 +47,15 @@ class Zend_Form_Element_Checkbox extends Zend_Form_Element_Xhtml
     public $helper = 'formCheckbox';
 
     /**
+     * Options that will be passed to the view helper
+     * @var array
+     */
+    public $options = array(
+        'checkedValue'   => '1',
+        'uncheckedValue' => '0',
+    );
+
+    /**
      * Value when checked
      * @var string
      */
@@ -128,6 +137,7 @@ class Zend_Form_Element_Checkbox extends Zend_Form_Element_Xhtml
     public function setCheckedValue($value)
     {
         $this->_checkedValue = (string) $value;
+        $this->options['checkedValue'] = $value;
         return $this;
     }
 
@@ -150,6 +160,7 @@ class Zend_Form_Element_Checkbox extends Zend_Form_Element_Xhtml
     public function setUncheckedValue($value)
     {
         $this->_uncheckedValue = (string) $value;
+        $this->options['uncheckedValue'] = $value;
         return $this;
     }
 
@@ -189,21 +200,4 @@ class Zend_Form_Element_Checkbox extends Zend_Form_Element_Xhtml
     {
         return $this->checked;
     }
-
-    /**
-     * Render
-     *
-     * Ensure that options property is set when rendering.
-     *
-     * @param  Zend_View_Interface $view
-     * @return string
-     */
-    public function render(Zend_View_Interface $view = null)
-    {
-        $this->options = array(
-            'checked'   => $this->getCheckedValue(),
-            'unChecked' => $this->getUncheckedValue(),
-        );
-        return parent::render($view);
-    }
 }

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

@@ -43,8 +43,8 @@ class Zend_View_Helper_FormCheckbox extends Zend_View_Helper_FormElement
      * @var array
      */
     protected static $_defaultCheckedOptions = array(
-        'checked'   => '1',
-        'unChecked' => '0'
+        'checkedValue'   => '1',
+        'uncheckedValue' => '0'
     );
 
     /**
@@ -90,7 +90,7 @@ class Zend_View_Helper_FormCheckbox extends Zend_View_Helper_FormElement
         // build the element
         $xhtml = '';
         if (!strstr($name, '[]')) {
-            $xhtml = $this->_hidden($name, $checkedOptions['unCheckedValue']);
+            $xhtml = $this->_hidden($name, $checkedOptions['uncheckedValue']);
         }
         $xhtml .= '<input type="checkbox"'
                 . ' name="' . $this->view->escape($name) . '"'
@@ -116,27 +116,27 @@ class Zend_View_Helper_FormCheckbox extends Zend_View_Helper_FormElement
     {
         // Checked/unchecked values
         $checkedValue   = null;
-        $unCheckedValue = null;
+        $uncheckedValue = null;
         if (is_array($checkedOptions)) {
-            if (array_key_exists('checked', $checkedOptions)) {
-                $checkedValue = (string) $checkedOptions['checked'];
-                unset($checkedOptions['checked']);
+            if (array_key_exists('checkedValue', $checkedOptions)) {
+                $checkedValue = (string) $checkedOptions['checkedValue'];
+                unset($checkedOptions['checkedValue']);
             }
-            if (array_key_exists('unChecked', $checkedOptions)) {
-                $unCheckedValue = (string) $checkedOptions['unChecked'];
-                unset($checkedOptions['unChecked']);
+            if (array_key_exists('uncheckedValue', $checkedOptions)) {
+                $uncheckedValue = (string) $checkedOptions['uncheckedValue'];
+                unset($checkedOptions['uncheckedValue']);
             }
             if (null === $checkedValue) {
                 $checkedValue = array_shift($checkedOptions);
             }
-            if (null === $unCheckedValue) {
-                $unCheckedValue = array_shift($checkedOptions);
+            if (null === $uncheckedValue) {
+                $uncheckedValue = array_shift($checkedOptions);
             }
         } elseif ($value !== null) {
-            $unCheckedValue = self::$_defaultCheckedOptions['unChecked'];
+            $uncheckedValue = self::$_defaultCheckedOptions['uncheckedValue'];
         } else {
-            $checkedValue   = self::$_defaultCheckedOptions['checked'];
-            $unCheckedValue = self::$_defaultCheckedOptions['unChecked'];
+            $checkedValue   = self::$_defaultCheckedOptions['checkedValue'];
+            $uncheckedValue = self::$_defaultCheckedOptions['uncheckedValue'];
         }
 
         // is the element checked?
@@ -157,7 +157,7 @@ class Zend_View_Helper_FormCheckbox extends Zend_View_Helper_FormElement
             'checked'        => $checked,
             'checkedString'  => $checkedString,
             'checkedValue'   => $checkedValue,
-            'unCheckedValue' => $unCheckedValue,
+            'uncheckedValue' => $uncheckedValue,
         );
     }
 }