Browse Source

[ZF-6822] Zend_Form:

- fixed non array notation for addValidator()

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21782 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 years ago
parent
commit
89849e9f8a
2 changed files with 29 additions and 8 deletions
  1. 8 8
      library/Zend/Form/Element.php
  2. 21 0
      tests/Zend/Form/ElementTest.php

+ 8 - 8
library/Zend/Form/Element.php

@@ -413,10 +413,10 @@ class Zend_Form_Element implements Zend_Validate_Interface
         }
         return $this->_translator;
     }
-    
+
     /**
      * Does this element have its own specific translator?
-     * 
+     *
      * @return bool
      */
     public function hasTranslator()
@@ -1332,12 +1332,12 @@ class Zend_Form_Element implements Zend_Validate_Interface
             array_unshift($validators, $notEmpty);
             $this->setValidators($validators);
         }
-        
+
         // Find the correct translator. Zend_Validate_Abstract::getDefaultTranslator()
         // will get either the static translator attached to Zend_Validate_Abstract
-        // or the 'Zend_Translate' from Zend_Registry. 
-        if (Zend_Validate_Abstract::hasDefaultTranslator() && 
-            !Zend_Form::hasDefaultTranslator()) 
+        // or the 'Zend_Translate' from Zend_Registry.
+        if (Zend_Validate_Abstract::hasDefaultTranslator() &&
+            !Zend_Form::hasDefaultTranslator())
         {
             $translator = Zend_Validate_Abstract::getDefaultTranslator();
             if ($this->hasTranslator()) {
@@ -1355,7 +1355,7 @@ class Zend_Form_Element implements Zend_Validate_Interface
         foreach ($this->getValidators() as $key => $validator) {
             if (method_exists($validator, 'setTranslator')) {
                 if (method_exists($validator, 'hasTranslator')) {
-                    if (!$validator->hasTranslator()) {                    
+                    if (!$validator->hasTranslator()) {
                         $validator->setTranslator($translator);
                     }
                 } else {
@@ -2099,7 +2099,7 @@ class Zend_Form_Element implements Zend_Validate_Interface
         }
 
         $messages = false;
-        if (isset($validator['options']['messages'])) {
+        if (isset($validator['options']) && array_key_exists('messages', (array)$validator['options'])) {
             $messages = $validator['options']['messages'];
             unset($validator['options']['messages']);
         }

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

@@ -2174,6 +2174,27 @@ class Zend_Form_ElementTest_ArrayFilter implements Zend_Filter_Interface
         $form = new Zend_Form(array('elements' => array($username)));
         $this->assertTrue($form->isValid(array('username' => 'abcde')));
     }
+
+    /**
+     * @see ZF-6822
+     */
+    public function testValidatorByUsingStringNotation()
+    {
+        $this->_checkZf2794();
+
+        $username = new Zend_Form_Element('username');
+        $username->addValidator('stringLength', true, array(5, 20))
+                 ->addValidator('regex', true, '/^[a-zA-Z0-9_]*$/')
+                 ->addFilter('StringToLower')
+                 ->setRequired(true);
+        $form = new Zend_Form(array('elements' => array($username)));
+        $form->isValid(array('username' => '#'));
+
+        $validator = $username->getValidator('stringLength');
+        $this->assertTrue($validator->zfBreakChainOnFailure);
+        $validator = $username->getValidator('regex');
+        $this->assertTrue($validator->zfBreakChainOnFailure);
+    }
 }
 
 if (PHPUnit_MAIN_METHOD == 'Zend_Form_ElementTest::main') {