Sfoglia il codice sorgente

ZF-8764: prevent double-translation of submit button labels

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@24279 44c647ce-9c0f-0410-b52a-842ac1e357ba
matthew 14 anni fa
parent
commit
fcbafb1de9

+ 3 - 3
library/Zend/Form/Element/Submit.php

@@ -75,10 +75,10 @@ class Zend_Form_Element_Submit extends Zend_Form_Element_Xhtml
 
         if (null === $value) {
             $value = $this->getName();
-        }
 
-        if (null !== ($translator = $this->getTranslator())) {
-            return $translator->translate($value);
+            if (null !== ($translator = $this->getTranslator())) {
+                return $translator->translate($value);
+            }
         }
 
         return $value;

+ 24 - 0
tests/Zend/Form/Element/SubmitTest.php

@@ -159,6 +159,30 @@ class Zend_Form_Element_SubmitTest extends PHPUnit_Framework_TestCase
         $this->assertEquals($translations['Label'], $submit->getLabel());
     }
 
+    public function testLabelWhichIsSetToNameIsTranslatedWhenTranslationAvailable()
+    {
+        require_once 'Zend/Translate.php';
+        $translations = array('foo' => 'This is the Submit Label');
+        $translate = new Zend_Translate('array', $translations);
+        $submit = new Zend_Form_Element_Submit('foo');
+        $submit->setTranslator($translate);
+        $this->assertEquals($translations['foo'], $submit->getLabel());
+    }
+
+    /**
+     * @group ZF-8764
+     */
+    public function testLabelIsNotTranslatedTwice()
+    {
+        require_once 'Zend/Translate.php';
+        $translations = array('firstLabel' => 'secondLabel',
+                              'secondLabel' => 'thirdLabel');
+        $translate = new Zend_Translate('array', $translations);
+        $submit = new Zend_Form_Element_Submit('foo', 'firstLabel');
+        $submit->setTranslator($translate);
+        $this->assertEquals($translations['firstLabel'], $submit->getLabel());
+    }
+
     public function testIsCheckedReturnsFalseWhenNoValuePresent()
     {
         $this->assertFalse($this->element->isChecked());