Browse Source

[GENERIC] Zend_Form_Element_File:

- added same translator handling like within Element

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18964 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 years ago
parent
commit
d68bf1f68a
2 changed files with 21 additions and 2 deletions
  1. 11 2
      library/Zend/Form/Element/File.php
  2. 10 0
      tests/Zend/Form/Element/FileTest.php

+ 11 - 2
library/Zend/Form/Element/File.php

@@ -747,8 +747,17 @@ class Zend_Form_Element_File extends Zend_Form_Element_Xhtml
      */
     public function getTranslator()
     {
-        $adapter = $this->getTransferAdapter();
-        return $adapter->getTranslator();
+        if ($this->translatorIsDisabled()) {
+            return null;
+        }
+
+        $translator = $this->getTransferAdapter()->getTranslator();
+        if (null === $translator) {
+            require_once 'Zend/Form.php';
+            return Zend_Form::getDefaultTranslator();
+        }
+
+        return $translator;
     }
 
     /**

+ 10 - 0
tests/Zend/Form/Element/FileTest.php

@@ -423,6 +423,16 @@ class Zend_Form_Element_FileTest extends PHPUnit_Framework_TestCase
         $this->assertContains('TestError3', $messages);
     }
 
+    public function testGetTranslatorRetrievesGlobalDefaultWhenAvailable()
+    {
+        $this->assertNull($this->element->getTranslator());
+        $translator = new Zend_Translate('array', array('foo' => 'bar'));
+        require_once 'Zend/Form.php';
+        Zend_Form::setDefaultTranslator($translator);
+        $received = $this->element->getTranslator();
+        $this->assertSame($translator->getAdapter(), $received);
+    }
+
     public function testDefaultDecoratorsContainDescription()
     {
         $element    = new Zend_Form_Element_File('baz');