Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
[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
[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
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 :
$form = new Application_Form_Connexion(); .... $this->_helper->layout()->formulaire_aut =$form;
Et dans le layout ;
echo $this->layout()->formulaire_aut;
Lasouze
Hors ligne
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
Pages: 1