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

Merged r25066 from trunk

git-svn-id: http://framework.zend.com/svn/framework/standard/branches/release-1.12@25067 44c647ce-9c0f-0410-b52a-842ac1e357ba
rob 13 лет назад
Родитель
Сommit
c38501829b
2 измененных файлов с 32 добавлено и 2 удалено
  1. 3 2
      library/Zend/Form/Decorator/File.php
  2. 29 0
      tests/Zend/Form/Decorator/FileTest.php

+ 3 - 2
library/Zend/Form/Decorator/File.php

@@ -117,16 +117,17 @@ class Zend_Form_Decorator_File
             $markup[] = $view->formHidden('UPLOAD_IDENTIFIER', uniqid(), array('id' => 'progress_key'));
         }
 
+        $helper = $element->helper;
         if ($element->isArray()) {
             $name .= "[]";
             $count = $element->getMultiFile();
             for ($i = 0; $i < $count; ++$i) {
                 $htmlAttribs        = $attribs;
                 $htmlAttribs['id'] .= '-' . $i;
-                $markup[] = $view->formFile($name, $htmlAttribs);
+                $markup[] = $view->$helper($name, $htmlAttribs);
             }
         } else {
-            $markup[] = $view->formFile($name, $attribs);
+            $markup[] = $view->$helper($name, $attribs);
         }
 
         $markup = implode($separator, $markup);

+ 29 - 0
tests/Zend/Form/Decorator/FileTest.php

@@ -29,6 +29,7 @@ require_once 'Zend/Form/Decorator/File.php';
 
 require_once 'Zend/Form/Element/File.php';
 require_once 'Zend/View.php';
+require_once 'Zend/View/Helper/FormElement.php';
 
 /**
  * Test class for Zend_Form_Decorator_Errors
@@ -169,6 +170,26 @@ class Zend_Form_Decorator_FileTest extends PHPUnit_Framework_TestCase
         $file = $this->decorator->render('content');
         $this->assertRegexp('#<input[^>]*>.*?(content)#s', $file, $file);
     }
+    
+    /**
+     * @group ZF-10519
+     */
+    public function testCanChangeViewHelper()
+    {
+        $element = new Zend_Form_Element_File('foo');
+        $element->setView($this->getView());
+        
+        // Get output using default view helper
+        $defaultOutput = $element->render();
+        
+        // Get output using mock view helper
+        $element->helper = "formFileMock";
+        $mockOutput = $element->render();
+        
+        // Ensure the view helper was changed
+        $this->assertRegexp('/FormFileMock/s', $mockOutput);
+        $this->assertNotEquals($defaultOutput, $mockOutput);
+    }
 
     private function _convertIniToInteger($setting)
     {
@@ -194,6 +215,14 @@ class Zend_Form_Decorator_FileTest extends PHPUnit_Framework_TestCase
     }
 }
 
+class Zend_View_Helper_FormFileMock extends Zend_View_Helper_FormElement
+{
+    public function formFileMock($name, $attribs=NULL)
+    {
+        return "FormFileMock";
+    }
+}
+
 // Call Zend_Form_Decorator_FileTest::main() if this source file is executed directly.
 if (PHPUnit_MAIN_METHOD == "Zend_Form_Decorator_FileTest::main") {
     Zend_Form_Decorator_FileTest::main();