Просмотр исходного кода

ZF-9348: allow validating subforms with children of the same name

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21697 44c647ce-9c0f-0410-b52a-842ac1e357ba
matthew 16 лет назад
Родитель
Сommit
99c69ec928
2 измененных файлов с 19 добавлено и 1 удалено
  1. 1 1
      library/Zend/Form.php
  2. 18 0
      tests/Zend/Form/FormTest.php

+ 1 - 1
library/Zend/Form.php

@@ -2044,7 +2044,7 @@ class Zend_Form implements Iterator, Countable, Zend_Validate_Interface
             if (null !== $translator && !$form->hasTranslator()) {
                 $form->setTranslator($translator);
             }
-            if (isset($data[$key])) {
+            if (isset($data[$key]) && !$form->isArray()) {
                 $valid = $form->isValid($data[$key]) && $valid;
             } else {
                 $valid = $form->isValid($data) && $valid;

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

@@ -1473,6 +1473,24 @@ class Zend_Form_FormTest extends PHPUnit_Framework_TestCase
         $this->assertTrue($this->form->isValid($data));
     }
 
+    public function testIsValidEqualSubFormAndElementName()
+    {
+        $this->form->addSubForm(new Zend_Form_SubForm(), 'foo')
+                   ->foo->addElement('text', 'foo')
+                        ->foo->setRequired(true)
+                             ->addValidator('Identical',
+                                            false,
+                                            array('Foo Value'));
+        $foo = array('foo' =>
+                     array('foo' => 'Foo Value'));
+
+        $this->assertTrue($this->form->isValid($foo));
+
+        $this->form->foo->setIsArray(false);
+
+        $this->assertTrue($this->form->isValid($foo));
+    } 
+
 
     // Display groups