Les étranges décorateurs de M. Zend_Form_Element_Captcha

Zend_Form_Element_Captcha qui permet d'ajouter un Captcha à un formulaire a un comportement un peu particulier avec ses décorateurs.

Premièrement, il ajoute dans sa méthode render un décorateur Captcha aux décorateurs que vous avez défini. Ce decorator génère le code HTML pour l'image, le champ caché (INPUT de type HIDDEN) et le champ texte permettant à l'utilisateur de saisir le code du Captcha. Contrairement aux autres types de champ de formulaire, on n'a donc pas de decorator ViewHelper à spécifier.

Deuxièmement, Zend_Form_Element_Captcha est affecté d'un bogue qui fait que les alias de décorateurs sont perdus lors de l'appel de cette fameuse méthode render. Résultat, il est impossible d'utiliser deux décorateurs de la même classe sur un même élément. J'ai cherché comment contourner le problème mais je ne suis pas parvenu à une solution satisfaisante. J'ai finalement obtenu le résultat désiré avec une règle CSS.

Donc, comme dirait Maurice, Beware of Zend_Form_Element_Captcha !

Portrait de Anonyme

Hello, am using a

Hello,

am using a Zend_Form_Element_File in my form.

but when i passed a decorator i got an error " Exception caught by form: No file decorator found... unable to render file element Stack Trace: #0 /var/www/pg/ividence/library/Zend/Form/Decorator/FormElements.php(101): Zend"

 $file->setLabel($this->view->translate('Image'))->setRequired(false)
			 ->setAttrib('id', 'news-image')
			 ->addValidator('FilesSize', false, 10000)
			 ->addValidator('ImageSize', false, array('minwidth' => 30, 'maxwidth' => 90, 'minheight' => 30, 'maxheight' => 90))
			 ->addValidator('Extension', false, 'jpg,png,gif');
 
 $form->setElementDecorators(array(
                'ViewHelper',
                'Description',
    	        'Label',
    	        'Errors',
                new Zend_Form_Decorator_HtmlTag(
               array('tag' => 'li','class'=>'news')) 
            ), array('image'));

is there a way to pass the file upload element within a

  • tag like that
        <li class="news">
         <label>Image</label>
         <input id="MAX_FILE_SIZE" type="hidden" value="2097152" name="MAX_FILE_SIZE"/>
         <input id="news-image" type="file" name="image"/>
       </li>
     
  • Thank you for your kind help

    Poster un nouveau commentaire

    Le contenu de ce champ ne sera pas montré publiquement. If you have a Gravatar account, used to display your avatar.
    • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
    • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
    • Les lignes et les paragraphes vont à la ligne automatiquement.
    • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].

    Plus d'informations sur les options de formatage

    CAPTCHA
    La vérification ne tient pas compte des minuscules ou des majuscules.
    Image CAPTCHA
    Enter the characters shown in the image.