Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-08-2010 19:53:55

bandit_rouge
Membre
Date d'inscription: 18-02-2010
Messages: 31

Auth login/mot de passe textbox pré-remplis avec message d'erreur

(Voir mon dernier message num 8 pour le code)


Bonjour,

J'ai suivi tout le tutorial de Rob Allen sur le site suivant:
http://akrabat.com/zend-auth-tutorial/
Je l'ai un peu modifié à ma sauce mais j'ai un petit souci pour afficher un message d'erreur quand l'authentification ne se fait pas (login ou mot de passe incorrect).


public function indexAction()
    {
        $form = new Application_Form_Login();
        $request = $this->getRequest();
        if ($request->isPost()) {
            if ($form->isValid($request->getPost())) {
                if ($this->_process($form->getValues())) {
                    // We're authenticated! Redirect to the home page
                    $this->_helper->redirector('index', 'index');
                }
                   
                else{
                 //le message d'erreur doit être ici?!
                }

            }
        }
        $this->view->form = $form;
    }

Dans un premier temps j'ai fait un simple echo mais je dois avoir cette ligne pour un probleme JS dans mon formulaire:
$this->_helper->redirector('index', 'index');
du coup le echo n'affiche plus rien.
J'ai tenté d'utilisé flashmessenger sans succès.

Quelqu'un a une idée?

Dernière modification par bandit_rouge (04-09-2010 14:53:41)

Hors ligne

 

#2 26-08-2010 06:59:35

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Auth login/mot de passe textbox pré-remplis avec message d'erreur

Bonjour,
Je pense que tu peux mettre le message d'erreur dans une variable de vue :

Code:

...
$this->view->messageErreur = "Mon message";
...

puis dans ta vue tu l'affiche si il existe.

Dede


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#3 30-08-2010 18:34:38

bandit_rouge
Membre
Date d'inscription: 18-02-2010
Messages: 31

Re: Auth login/mot de passe textbox pré-remplis avec message d'erreur

merci pour la réponse qui pourrais fonctionner si je n'utilisais pas cette ligne de code:
$this->_helper->redirector('index', 'index');
du coup cela n'affiche pas le message d'erreur!
une autre idée?

En fait j'essaye d'avoir mes textbox 'login' et 'password' déjà pré-remplis pour éviter d'avoir le label avant mes textbox dans mon formulaire d'authentification.

// ajouter un élément: email
$this->addElement('text', 'email', array(
                          'filters'     => array('StringTrim', 'StringToLower'),
                          'validators'  => array(
                                array('StringLength', true, array(0, 50))
                                ),
                          'required'    => true,
                          'value'       => 'Email',
                          'onfocus'     => 'javascript:this.value = "";'
));
                       
        // ajouter un élément: password
$this->addElement('text', 'password', array(
            'filters'    => array('StringTrim'),
            'validators' => array(
                array('StringLength', true, array(0, 50)),
                ),
            'required'    => true,
            'value'       => 'Mot de passe..',
            'onfocus'     => 'javascript:this.value = "";this.type="password";'
));
j'ai bidouillé un truc en JS.
Mais mon premier souci c'est que le mot de passe apparait en clair si le login échoue!
Donc j'ai réglé ce problème en utilisant la ligne de code
$this->_helper->redirector('index', 'index');
qd l'authentification échoue.

Un piste?

Dernière modification par bandit_rouge (30-08-2010 19:58:48)

Hors ligne

 

#4 31-08-2010 09:16:26

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Auth login/mot de passe textbox pré-remplis avec message d'erreur

Je pense que c'est normale que ton mot de passe apparaisse en clair, tu utilise un élément "text", tu devrais peut être utiliser l'élément "password":

Code:

$this->addElement('password', 'password'...

Et dans ce cas plus besoin de redirection ni de js pour cacher ton mot de passe ?

nb : J'ai jeter un oeil sur le tutoriel et il redirige lorsque l'authentification est réussit et non lors de l'échec. De plus il utilise bien un élément "password" pour son formulaire.
En procedant de la sorte tu pourra utiliser :

Code:

... $this->view->message = "pour le message d'erreur"; ....

et ne pas avoir besoin de js pour cacher le mot de passe

Dernière modification par Dede (31-08-2010 09:27:20)


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#5 31-08-2010 10:44:53

bandit_rouge
Membre
Date d'inscription: 18-02-2010
Messages: 31

Re: Auth login/mot de passe textbox pré-remplis avec message d'erreur

mais le problème avec un élément de type password c'est que la value n'apparait pas (ou apparait mais en crypté) donc j'ai un textbox sans rien! c'est pour ca que je le met en type texte!
une autre suggestion?

Dernière modification par bandit_rouge (31-08-2010 10:59:46)

Hors ligne

 

#6 31-08-2010 14:30:34

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Auth login/mot de passe textbox pré-remplis avec message d'erreur

Si tu veux réinitialisé ton PWD sur un echec :

Code:

$form->getElement('password)->setValue('Mot de passe...');
//juste avant le 
$this->view->form = $form;

Celui du formulaire devient donc inutile puisque tu set la valeur avant de l'envoyer dans la variable de vue

Du coup plus besoin de redirection et tu peux donc afficher ton message d'erreur "normalement".
Sinon tu redirige avec un paramètre:
echec = 1;
et tu test le paramètre pour afficher, ou non, l'erreur
Perso rediriger sur le même controler/action je ne suis pas fan smile


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#7 31-08-2010 22:41:27

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Auth login/mot de passe textbox pré-remplis avec message d'erreur

Pour le message : flash messenger (voir : http://framework.zend.com/manual/fr/zen … lpers.html)

Hors ligne

 

#8 04-09-2010 14:50:22

bandit_rouge
Membre
Date d'inscription: 18-02-2010
Messages: 31

Re: Auth login/mot de passe textbox pré-remplis avec message d'erreur

Nickel Dédé!
Grâce à toi mon problème est résolu!!!

Alors petit récap pour les prochains:

Authentification login/mot de passe sans label avec message d'erreur echec authentification sur la base du tutoriel de Rob Allen sur le site suivant http://akrabat.com/zend-auth-tutorial/:

pour le formulaire:

$this->addElement('text', 'email', array(
                          'filters'     => array('StringTrim', 'StringToLower'),
                          'validators'  => array(
                                array('StringLength', true, array(0, 50))
                                ),
                          'required'    => true,
                          'value'       => 'Email:',
                          'onfocus'     => 'javascript:this.value = "";',

                          ));
                       
        // ajouter un élément: password
        $this->addElement('text', 'password', array(
            'filters'    => array('StringTrim'),
            'validators' => array(
                array('StringLength', true, array(0, 50)),
                ),
            'required'    => true,
            'Value'       => 'Mot de passe:',
            'onfocus'     => 'javascript:this.value = "";this.type="password";',
          ));

et le controller:

    public function indexAction()
    {
         $errorMessage = "";
         $form = new Application_Form_Login();
                $request = $this->getRequest();
                if ($request->isPost()) {
                    if ($form->isValid($request->getPost())) {
                        if ($this->_process($form->getValues())) {
                            // We're authenticated! Redirect to the home page
                            $this->_helper->redirector('index', 'index');
                           
                        }  else {
                            $errorMessage = "Login ou mot de passe incorrect";                           
                        }
                    }
                $form->getElement("email")->setValue("Email:");
                $form->getElement("password")->setValue("mot de passe:");
                }
                $this->view->errorMessage= $errorMessage;
                $this->view->form = $form;
    }

Dernière modification par bandit_rouge (05-09-2010 15:57:09)

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