Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-06-2012 09:40:14

zf2user
Nouveau membre
Date d'inscription: 18-06-2012
Messages: 3

ZF2 - Beta4 - captcha problem

Bonjour à tous,

Je suis en trais d'essayer la beta 4 de ZF2. Je voudrais affciher un formulaire d'enregistrement avec un captcha. Mais petit souci, aucun captcha n'est affiché, et aucune erreur n'est renvoyée.

Voci ce que j'ai fait

Un RegisterForm dans modulexxx/Form:

Code:

class RegisterForm extends Form{

    public function __construct()
    {
    parent::__construct();
    $this->setName('register');
    $this->setAttribute('method', 'post');
    $this->setAttribute('action', 'user/register');
    $this->add(array(
            'name' => 'login',
            'attributes' => array(
                'type' => 'text',

....

    $this->add(array(
            'type' => 'Zend\Form\Element\Captcha',
            'name' => 'captcha',
            'attributes' => array(
                'label' => 'Please verify you are human',
                'captcha' => array(
                    'class' => 'Dumb',
                        'options' => array(
                        ),
                    ),
            ),
        )
    );


....

Un LoginController dans modulexxx/Controller avec le code suivant :

Code:

    public function registerAction(){
        $ans = null;
        $sm = $this->getServiceLocator();
        $request = $this->getRequest();
        if ($request->isPost()) {
            // TODO : Register l'utilisateur
        }else{
            $form = new RegisterForm();
            // $sm->get('sessions-contener') returns a Container instance containing my SessionManager
            $form->get('captcha')->getCaptcha()->setSession($sm->get('sessions-contener'));
            $ans = array('form' => $form);
        }
        return $ans;
    }

Eu ma vue :

Code:

<div id="registerBox" class="loginBox">
<?
       $form = $this->form;
?>
<?php echo $this->form()->openTag($form); ?>
            <fieldset class="none">
....

                </div>
                <!-- -->
                <div class="centered">
                    <?php
                    // TODO : Voir pourquoi la secu et le captcha s'affichent pas
                        echo $this->formLabel($form->get('captcha'));
                        echo $this->formInput($form->get('captcha'));
                        echo $this->formElementErrors($form->get('captcha'));
                        //echo $this->formLabel()->closeTag();
                    ?>
                </div>
                
                <div class="centered">
....

Lorsque j'exécute, j'ai le code HTML suivant :

Code:

...
<div class="centered">
                    <label for="captcha">Please verify you are human</label><input name="captcha" type="text">
</div>
<div class="centered">
...

Et aucun captcha !

Je suis bloqué sur le problème depuis deux jours. Si vous avez une idée du pourquoi ça rate, n'hésitez pas !

Merci.

Dernière modification par zf2user (18-06-2012 09:43:30)

Hors ligne

 

#2 18-06-2012 11:36:43

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: ZF2 - Beta4 - captcha problem

Salut Zf2user, je n'ai pas eu l'occasion de tester mais essai de regarder ce qui est fait ici de mémoire il utilise ce composant https://github.com/ZF-Commons/ZfcUser

Hors ligne

 

#3 18-06-2012 12:25:57

zf2user
Nouveau membre
Date d'inscription: 18-06-2012
Messages: 3

Re: ZF2 - Beta4 - captcha problem

Merci pour ta réponse, Orkin.

Bon, je viens de mettre le nez dans le code source de ZF2.

Il ne faut pas utiliser la classe Dumb mais Image.

Voici un exemple qui fonctionne :

Code:

$this->add(array(
            'type' => 'Zend\Form\Element\Captcha',
            'name' => 'captcha',
            'attributes' => array(
                'required' => true,
                'allowEmpty' => false,
                'label' => 'Entrez le texte ci dessus',
                'captcha' => array(
                    'class' => 'Image',
                        'options' => array(
                            'font' => '/var/www/Zend2Project/zf2XXX/data/fonts/arial.ttf',
                        ),
                    ),
            ),
        )
    );

Puis dans votre vue :

Code:

 <!-- -->
                    
                    <img src="<?php 
                        echo $basePath."/images/captcha/".$form->get('captcha')->getCaptcha()->generate().".png";
                        ?>">
                    <br>
                    <div class="registerFormLabel"> //
                    <?php                    
                        echo $this->formLabel($form->get('captcha'));
                     ?>
                    <div class="registerFormInput">
                     <?php
                        echo $this->formInput($form->get('captcha'));
                        echo $this->formElementErrors($form->get('captcha'));
                     ?>
                </div>

Le captcha est généré dans votre public/images/captcha. Pensez à le supprimer !

Il vous faudra aussi un fichier de polices .ttf pour générer le captcha.

Ca pourra en aider d'autres...

Tutu http://www.hackbbs.org

Dernière modification par zf2user (18-06-2012 12:27:35)

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