Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-07-2011 13:41:55

damdamien
Membre
Date d'inscription: 02-07-2011
Messages: 22

[1.11] Formulaire de connection sur toute mes pages

Bonjour,

Désolé pour les fautes, ce sujet est long j'ai cherché à fournir un maximun d'information afin que vous puissiez me réorienté au cas ou mais choix n'était pas judicieux.

Je viens vers vous car je rencontre un problème avec ma logique de codage. Je suis débutant sous Z-F..

Je souhaite insérer un formulaire de connection dans toute mes pages si la connection n'a pas été éffectuer.

J'ai donc proceder en créant un plugin qui extends Zend_Controller_Plugin_Abstract.

J'instancie ce controller dans mon Bootstrap.

A priori tout ce passe bien mise à part le fait que je n'arrive pas à retourner le formulaire dans mon layout. 


La partie qui nous intéresse dans le BOOTSTRAP

Code:

[lng=php]
<?php

protected function _initAcl()
        {
                
                $acl = new My_Acl_MyAcl();
                Zend_Controller_Front::getInstance()->registerPlugin(new My_Controller_Plugin_Acl());
                Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl);

                
                $auth = Zend_Auth::getInstance();
                $role = (!$auth->hasIdentity()) ? '1' : $auth->getIdentity()->role;
                //si le $role est supérieur a visteur 
                //j'afficherais un menu en fonction du role 
                if($role>'1'){
                    
                }else{
                    //sinon on affiche le formulaire de connection
                    Zend_Controller_Front::getInstance()->registerPlugin(new My_Controller_Plugin_Connexion());
                    
                }
        }

Mon plugin de connexion

Code:

[lang=php]

<?php

    class My_Controller_Plugin_Connexion extends Zend_Controller_Plugin_Abstract
{

        public function preDispatch(Zend_Controller_Request_Abstract $request) {
                parent::preDispatch($request);
                
            
               
                if(Zend_Auth::getInstance()->hasIdentity()){
                    
                    print_r(Zend_Auth::getInstance()->getIdentity());
                    var_dump(Zend_Auth::getInstance()->getStorage()->read());
                }
                else
                {
                    
                    $resquest = $this->getRequest();
                    $form = new Application_Form_Connexion();
                    
                        if($resquest->isPost()){
                            if($form->isValid($resquest->getPost())){
                          
                                
                                $username=$form->getValue('email');
                                $pass=$form->getValue('pass');
                                
                                $config = $this->getAuthAdapter();
                                $config->setIdentity($username)
                                       ->setCredential($pass);

                                $auth=Zend_Auth::getInstance();
                                $result = $auth->authenticate($config);
                                
                                if($result->isValid()){
                                    $identiter = $config->getResultRowObject();
                                    $donneeUser = $auth->getStorage();
                                    $donneeUser->write($identiter);
                                    
                                    //test de recuperation
                                    
                                    var_dump(Zend_Auth::getInstance()->getStorage()->read());
                                    echo 'connecter';
                                    
                                }
                                else
                                {
                                    echo 'non connecter';
                                    return $form;
                                }
                                
                            }
                            else
                            {
                                 return $form;
                            }
                                
                        }
                        else
                        {
                            //actuellement je me concentre uniquement
                            //sur l'affichage du formulaire a ce niveau!!

                            $this->view->formulaire;
                        }
                }
            return;
            
            }
        public function logoutAction() {
            
                
                Zend_Auth::getInstance()->clearIdentity();
                
        }
            
            private function getAuthAdapter(){
                $config = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
                $config->setTableName('user')
                       ->setIdentityColumn('email')
                       ->setCredentialColumn('pass')
                       ->setCredentialTreatment('SHA1(?)');
                
                return $config;    
            }

}

dans mon layout

<?php echo $this->formulaire; ?>

Merci de me donner des voies ou m'expliqué ce qu'il devrait ce passé.

J'ai chercher sur internet et sur ce forum notament du coter des partial mais je ne comprends pas bien ce qu'il ce passe ou ce qu'il doit ce passer.

Amicalement

damdamien

Dernière modification par damdamien (17-07-2011 13:43:32)

Hors ligne

 

#2 23-09-2011 11:01:50

lasouze
Nouveau membre
Date d'inscription: 23-09-2011
Messages: 1

Re: [1.11] Formulaire de connection sur toute mes pages

Déterrage de topic...

Je ne suis pas spécialiste Zend non plus , mais je trouve que c'est étrange comme façon de faire.

Cependant, si tu veux réellement récupérer le formulaire dans le layout il y a 2 façons de faire :
Soit tu l'ajoute a la vue courante et tu en fait référence dans le layout.
Soit (et je préfère) tu l'associé directement à ton layout dans le controller :

Code:

$form = new Application_Form_Connexion();
....
$this->_helper->layout()->formulaire_aut =$form;

Et dans le layout ;

Code:

echo $this->layout()->formulaire_aut;

Lasouze

Hors ligne

 

#3 23-09-2011 14:04:04

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: [1.11] Formulaire de connection sur toute mes pages

Personnellement j'aurais aussi pu imaginer une action qui affiche le formulaire, et cette action pourrait être appelée dans ton layout grâce à l'aide de vue action...

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