Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-11-2008 16:49:38

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

[Résolu] Menu avec identification

Bonjour à tous, je viens solliciter votre aide car je galère depuis plusieurs jours sur la facon de m'identifier sur mon site et ca commence tout doucement à me courrir sur le haricot.

J'ai pour le moment un site (un début de site) basé sur le modèle mvc, avec un layout.
Mon layout est relativement basique, une bannière d'entete, un menu sur la gauche, une zone centrale de contenu et un pied de page. Le tout géré par un css.
Dans le menu, je dois avoir une partie lien (qui est variable suivant si on est connecté ou non) et un formulaire d'identification dans le cas ou on est pas connecté. Alors c'est la que je commence à m'embrouiller et que je sais pas trop comment faire... plugin, helper, controleur,....???? lequel choisir et comment l'implémenté

Pour le moment j'ai suivis plusieurs tuto sur le net dont celui ci sur lequel je me suis principalement basé pour faire mon layout et mon identification (http://julien-pauli.developpez.com/tuto … nd-layout/) ou encore celui ci pour l'authentification (http://r-benyacoub.developpez.com/tutor … e=methodes).

Je vous mets le code de mon layout ci dessous,

Code:

<div id="banniere-top"><img src="/images/mep_top.gif" /></div>
<div id="central">
   <div id="menu">
      <?php echo $this->action ( 'index', 'menu' )?></div>
      <div id="content"><?php echo $this->layout ()->content; ?></div>
   </div>
<div id="footer"><img src="/images/mep_bottom.gif" /></div>

et pour le code de mon MenuControlleur

Code:

   public function indexAction()
    {
       $auth = Zend_Auth::getInstance();
      if ($auth->hasIdentity())
      {
          $this->view->msg ="mon menu auth";
        $this->view->identity = $auth->getIdentity();
        $this->render('index');
      }
      else 
      {
          $this->view->msg ="menu + demande de login";
        $this->render('login');
      }       
       
   //    $this->view->msg ="menu du login";
       
    }
    
    function loginAction()
    {
        $this->view->msg = '';
        
        if ($this->_request->isPost()) {
            
            $f = new Zend_Filter_StripTags();
            $login = $f->filter($this->_request->getPost('login'));
            $password = $f->filter($this->_request->getPost('password'));
            
            if (empty($login)) {
                $this->view->msg = 'Please provide a username.';
            } 
            else {
                $authAdapter = new Zend_Auth_Adapter_DbTable();
                $authAdapter->setTableName('login');
                $authAdapter->setIdentityColumn('login');
                $authAdapter->setCredentialColumn('log_pw');

                $authAdapter->setIdentity($login);
                $authAdapter->setCredential($password);

                $auth = Zend_Auth::getInstance();
                $result = $auth->authenticate($authAdapter);

                if ($result->isValid()) {
                    $data = $authAdapter->getResultRowObject(null, 'password');
                    $auth->getStorage()->write($data);
                    $this->_redirect('/');
                } else {
                    $this->view->msg = 'Login failed.';
                }
            }
        }
        $this->view->title = "Log in";
        $this->render();
    }

Alors j'ai plusieurs problèmes: lorsque j'entre pour la 1e fois sur une page, c'est nikel. Par contre si je tente de me connecter, la j'ai soit une erreur interne 500 dans le cas ou mon login et pw sont correct (je soupconne qu'il boucle indéfiniment) soit ma page est un peu bizarre avec mon menu qui s'affiche horizontalement 2 fois :s.

Je suis pas sur d'utiliser la bonne méthode dans ce cas la, conseiller moi. Ou si je suis dans le bon, savez vous me dire ce qui cloche dans mes scripts?

Merci

Vincent

Dernière modification par b_20100 (16-11-2008 15:18:22)

Hors ligne

 

#2 12-11-2008 09:20:58

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu] Menu avec identification

Que vient faire login action dans ton menu ????

Peux tu connaitre les logs pour savoir ce que génère l'erreur 500 ?

De plus, on ne connait pas le code qui est exécuter quand on appelle '/' (qui éventuellement provoquerait la boucle infinie)


----
Gruiiik !

Hors ligne

 

#3 14-11-2008 08:57:22

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Re: [Résolu] Menu avec identification

Voila j'ai fini par trouver l'erreur tout seul. Il s'agissait de mon adaptateur db qui était pas bien initialisé (Merci IE pour l'erreur 500 alors que FireFox me donnait l'erreur quasi en "clair").

Sinon pour répondre à nORKy, mon menu contient le formulaire de login donc je trouvais logique de mettre mon code la. Mon controlleur menu, c'est plutot une "colonne" dans ma page ou j'ai mon menu et mon formulaire d'identification. Si maintenant tu as une autre solution ou que c'est pas comme ca qu'il faut le faire, je suis ouvert à toutes propositions. (Je suis qu'un débutant avec zend et je connais pas encore toutes les ficelles de zend pour bien l'utiliser).

Merci, bonne journée à vous.

Vincent

Hors ligne

 

#4 14-11-2008 09:09:12

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu] Menu avec identification

Ah, non, il n'a pas de meilleurs façon de faire : il y a la façon de faire à chacun.

C'est juste étonnant de voir ca dans un menu smile Eventuellement dans un header

Bien que dans tous les cas, perso, j'aurais 'sous decouper'. Comme ca, si on jour me prends de faire plusieurs mise en page différentes, j'ai juste le layout à modifier et la logique métier reste en place (mon code d'identification reste toujours dans le controller User)


----
Gruiiik !

Hors ligne

 

#5 14-11-2008 11:01:28

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Re: [Résolu] Menu avec identification

Oui c'est vrai qu'il n'y a pas une facon de coder... juste qu'il y en a qui sont meilleures que d'autres (mieux adaptées, plus claire,...) et que donc en étant débutant sur une technologie, on métrise pas ces choses la et que ca ne vient qu'à la longue.

mais c'est vrai que j'avais pensé découplé le menu - du login.
Pour générer mes liens supplémentaires dans le menu quand on est connecté, ca c'est OK, je vois comment faire mais par contre je savais pas comment ne pas afficher le formulaire dans le cas ou j'étais déjà identifier.

Parce que j'aurai eu un layout comme ca..

Code:

<div id="banniere-top"><img src="/images/mep_top.gif" /></div>
<div id="central">
   <div id="menu"><?php echo $this->action ( 'index', 'menu' )?></div>
   <div id="login"><?php echo $this->action ( 'index', 'login' )?></div>
   <div id="content"><?php echo $this->layout ()->content; ?></div>
</div>
<div id="footer"><img src="/images/mep_bottom.gif" /></div>

juste? et que donc à chaque fois il allait passer dans index de mon controlleur login et donc me rendre mon formulaire non? Ou alors il y a peut etre une facon de passer dans un controlleur sans rendre de vue dans le cas ou je suis déjà connecté?

Hors ligne

 

#6 14-11-2008 11:43:26

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu] Menu avec identification

oui
Dans ton action :
qqchose comme ca :

Code:

if (!$auth->hasIdentity()) {
  $this->_helper->viewRenderer->setNoRender();
}

Et rien ne sera rendu.


----
Gruiiik !

Hors ligne

 

#7 16-11-2008 15:17:20

b_20100
Membre
Date d'inscription: 23-09-2008
Messages: 23

Re: [Résolu] Menu avec identification

Merci à toi nORKy ca fonctionne et c'est beaucoup plus clair comme ca smile.

J'avais pensé faire la meme méthode que celle que tu m'as donné mais je sais pas pourquoi quand je l'avais essayé, tout ce qui était construit après le formulaire de loggin n'était pas rendu... les mistères de l'informatique lol

Je vais maintenant pouvoir m'attaquer aux acl (et j'aurai certainement encore des questions la dessus)

Vincent

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