Prechádzať zdrojové kódy

ZF-11504: changed the addSubForms to support numeric values as name

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24155 44c647ce-9c0f-0410-b52a-842ac1e357ba
ezimuel 14 rokov pred
rodič
commit
0455c26e2d
2 zmenil súbory, kde vykonal 20 pridanie a 6 odobranie
  1. 2 6
      library/Zend/Form.php
  2. 18 0
      tests/Zend/Form/SubFormTest.php

+ 2 - 6
library/Zend/Form.php

@@ -1641,12 +1641,8 @@ class Zend_Form implements Iterator, Countable, Zend_Validate_Interface
      */
     public function addSubForms(array $subForms)
     {
-        foreach ($subForms as $key => $spec) {
-            $name = null;
-            if (!is_numeric($key)) {
-                $name = $key;
-            }
-
+        foreach ($subForms as $key => $spec) {          
+            $name= (string) $key;
             if ($spec instanceof Zend_Form) {
                 $this->addSubForm($spec, $name);
                 continue;

+ 18 - 0
tests/Zend/Form/SubFormTest.php

@@ -139,6 +139,24 @@ class Zend_Form_SubFormTest extends PHPUnit_Framework_TestCase
     {
         $this->assertSame($this->form, $this->form->loadDefaultDecorators());
     }
+    /**
+     * @see ZF-11504
+     */
+    public function testSubFormWithNumericName()
+    {
+        $subForm = new Zend_Form_SubForm(array(
+            'elements' => array(
+                'foo' => 'text',
+                'bar' => 'text',
+            ),
+        ));
+        $form = new Zend_Form();
+        $form->addSubForm($subForm, 0);
+        $form->addSubForm($subForm, 234);
+        $form2 = clone $form;
+        $this->assertEquals($form2->getSubForm(234)->getName(),234);
+        $this->assertEquals($form2->getSubForm(0)->getName(),0);
+    }
 }
 
 class Zend_Form_SubFormTest_SubForm extends Zend_Form_SubForm