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

ZF-10803: Form ID overrides Fieldset ID and causes duplicate IDs

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24961 44c647ce-9c0f-0410-b52a-842ac1e357ba
adamlundrigan 13 лет назад
Родитель
Сommit
f4cb671eae

+ 1 - 1
library/Zend/Form/Decorator/Fieldset.php

@@ -132,7 +132,7 @@ class Zend_Form_Decorator_Fieldset extends Zend_Form_Decorator_Abstract
         $name    = $element->getFullyQualifiedName();
         $id      = (string)$element->getId();
 
-        if (!array_key_exists('id', $attribs) && '' !== $id) {
+        if ((!array_key_exists('id', $attribs) || $attribs['id'] == $id) && '' !== $id) {
             $attribs['id'] = 'fieldset-' . $id;
         }
 

+ 14 - 0
tests/Zend/Form/Decorator/FieldsetTest.php

@@ -243,6 +243,20 @@ class Zend_Form_Decorator_FieldsetTest extends PHPUnit_Framework_TestCase
 
         $this->assertEquals('<fieldset></fieldset>', $html);
     }
+    
+    /**
+     * @group ZF-10803
+     */
+    public function testFormIdOverridesFieldsetId()
+    {
+        $form = new Zend_Form();
+        $form->setAttrib('id', 'form-id')
+             ->setView($this->getView());
+        
+        $html = $this->decorator->setElement($form)->render('content');
+        
+        $this->assertContains('<fieldset id="fieldset-form-id"', $html);
+    }
 }
 
 // Call Zend_Form_Decorator_FieldsetTest::main() if this source file is executed directly.