Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-10-2008 15:18:33

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

mise en form de Zend_Captcha

Hello tout le monde,

je rencontre des difficultés pour l'utilisation de Zend_Captcha et plus particulièrement pour sa mise en forme:

voila ce que j'ai comme code dans mon controlleur:

Code:

        $captcha = new Zend_Captcha_Figlet(array(
            'name' => 'foo',
            'wordLen' => 4,
            'timeout' => 300
        ));
         
        $elementCaptcha = new Zend_Form_Element_Captcha('test', array(
            'label' => "Merci de vérifier que vous êtes un humain",
            'captcha' => $captcha
        ));

        $this->view->captcha = $elementCaptcha;

dans ma vue je fais un simple affichage:

Code:

<?= $this->captcha; ?>

Cela me génère un code du type:

Code:

<dt><label for="test" class="required">Merci de v&eacute;rifier que vous &ecirc;tes un humain</label></dt>

<dd>
<pre>  _____    __   __    _  __    ______  
 |__  //   \ \\/ //  | |/ //  /_   _// 
   / //     \ ` //   | ' //    -| ||-  
  / //__     | ||    | . \\    _| ||_  
 /_____||    |_||    |_|\_\\  /_____// 
 `-----`     `-`'    `-` --`  `-----`  
                                       
</pre>

<input type="hidden" name="test[id]" value="3e558d001ea2da707333c70f23fd1dc6" helper="formText" id="test-id">
<input type="text" name="test[input]" id="test-input" value="" helper="formText"></dd>

#) comment puis je modifier l'input genre ajouter un attribut type class="maclasse" ?
#) est ce que je afficher le label plutot après l'input texte ?
#) est ce que je peux ajouté des éléments après l'input: ex ajouté une icone qui va me permettre de recharger le captcha ?

D'avance merci

PS: je précise que je ne suis habitué à utiliser Zend_form c'est peut être pour ça que je n'ai pas trouvé de solution.

Hors ligne

 

#2 23-10-2008 14:21:14

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: mise en form de Zend_Captcha

personne pour me donner un petit coup de main ??

Hors ligne

 

#3 24-10-2008 14:22:49

slasch
Membre
Date d'inscription: 23-11-2007
Messages: 18

Re: mise en form de Zend_Captcha

Bonjour bucheron,

J'ai absolument le même problème que toi...

j'ai créé mon formulaire en y ajoutant un décorateur perso:

Code:

        // Contruction d'un Zend_Form
        parent::__construct($options);
        
        $this        ->setName('users')
                    ->setAction('')
                    ->setMethod('post')
                    ->clearDecorators()
                    ->addDecorator('FormElements')
                    ->addDecorator('Form')
                    ->addElementPrefixPath('My_Decorator', 'My/Decorator/', 'decorator');
        
        $username     = new Zend_Form_Element_Text('username');
        $username    ->setLabel('Identifiant')
                    ->setRequired(true)
                    ->setAttrib('size', '15')
                    ->addFilter('StripTags')
                    ->addFilter('StringTrim')
                    ->addValidator('NotEmpty')
                    ->addValidator('stringLength', false, array(6, 20))
                    ->setDecorators(array(
                        array('Errors'),
                        array('ViewHelper'),
                        array('Label'),
                        ));

        $captcha     = new Zend_Form_Element_Captcha('captcha', array(
                        'label' => utf8_encode('Vérification anti robots'),
                        'captcha' => array(
                            'captcha' => 'Image',
                            'font' => '/images/captcha/arial.ttf',
                            'imgUrl' => '/prestas-web/public/images/captcha/',
                            'timeout' => 300,
                            ),
                        ));
                    ->setRequired(true)
                    ->setDecorators(array(
                        array('Errors'),
                                    array('Label'),
                        ));

Mon décorateur s'applique bien à mon Zend_Form_Element_Text mais pas à Zend_Form_Element_Captcha :S

Si vous avez une idée...

Voici ma class pour le décorateur:

Code:

class My_Decorator_Label extends Zend_Form_Decorator_Abstract
{
    protected $_placement = 'PREPEND';

    public function render($content)
    {
        if (null === ($element = $this->getElement())) {
            return $content;
        }
        if (!method_exists($element, 'getLabel')) {
            return $content;
        }
        
        $label = $element->getLabel();
        $required = $element->isRequired();
        if ($element->isRequired()) {
            $label .= ' ';
        }
        
        if (null === ($view = $element->getView())) {
            return $this->renderLabel($content, $label, $required);
        }
        
        $label = $view->formLabel($element->getName(), $label);
        
        return $this->renderLabel($content, $label, $required);
    }
    
    public function renderLabel($content, $label, $required)
    {
        $placement = $this->getPlacement();
        $separator = $this->getSeparator();
        
        switch ($placement) {
            case 'APPEND':
                return $content . $separator . '<div class="label">' . $label . (($required == true) ? '<span class="red"> *</span>' : '') . '</div>';
            case 'PREPEND':
            default:
                return  '<div class="label">' . $label . (($required == true) ? '<span class="red"> *</span>' : '') . '</div>' . $separator . '<div class="input">' . $content . '</div>';
        }
    }
}

Bonne journée,
Christophe.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages