Преглед на файлове

[ZF-8882] Zend_Form:

- propagate setDisableTranslator to validators

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20704 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas преди 16 години
родител
ревизия
deb6ce27de
променени са 2 файла, в които са добавени 29 реда и са изтрити 2 реда
  1. 5 2
      library/Zend/Form/Element.php
  2. 24 0
      tests/Zend/Form/ElementTest.php

+ 5 - 2
library/Zend/Form/Element.php

@@ -1325,11 +1325,14 @@ class Zend_Form_Element implements Zend_Validate_Interface
         $this->_messages = array();
         $this->_errors   = array();
         $result          = true;
-        $translator      = $this->getTranslator();
         $isArray         = $this->isArray();
         foreach ($this->getValidators() as $key => $validator) {
             if (method_exists($validator, 'setTranslator')) {
-                $validator->setTranslator($translator);
+                $validator->setTranslator($this->getTranslator());
+            }
+
+            if (method_exists($validator, 'setDisableTranslator')) {
+                $validator->setDisableTranslator($this->translatorIsDisabled());
             }
 
             if ($isArray && is_array($value)) {

+ 24 - 0
tests/Zend/Form/ElementTest.php

@@ -2025,6 +2025,30 @@ class Zend_Form_ElementTest extends PHPUnit_Framework_TestCase
             $this->markTestIncomplete('Error occurs for PHP 5.1.4 on Windows');
         }
     }
+
+    /**
+     * @ZF-8882
+     */
+    public function testErrorMessagesShouldNotBeTranslatedWhenTranslatorIsDisabled()
+    {
+        $translations = array(
+            'foo' => 'Foo message',
+        );
+        $translate = new Zend_Translate('array', $translations);
+        $this->element->setTranslator($translate)
+                      ->addErrorMessage('foo')
+                      ->addValidator('Alpha');
+        $this->assertFalse($this->element->isValid(123));
+        $messages = $this->element->getMessages();
+        $this->assertEquals(1, count($messages));
+        $this->assertEquals('Foo message', array_shift($messages));
+
+        $this->element->setDisableTranslator(true);
+        $this->assertFalse($this->element->isValid(123));
+        $messages = $this->element->getMessages();
+        $this->assertEquals(1, count($messages));
+        $this->assertEquals('foo', array_shift($messages));
+    }
 }
 
 class Zend_Form_ElementTest_Decorator extends Zend_Form_Decorator_Abstract