IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Accès aux vues à partir d'un plugin


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut Accès aux vues à partir d'un plugin
    Bonjour à tous,

    J'ai créé un plugin qui gère toute la partie d'authentification du membre.

    Je voudrais profiter de ce plugin pour envoyer également les variables d'authentification à la vue. Je fais donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->view->user = Zend_Auth::getInstance()->getIdentity()
    Evidemment, cela ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Strict Standards: Creating default object from empty value in *******
    Même si je pense que la vue n'est pas accessible depuis un plugin en preDispatch, il doit y avoir une solution mais je n'arrive pas à la trouver.

    Avez vous une piste ?

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Peux-tu nous montrer le code de ta classe plugin ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Je pense que le code de mon plugin à peu d'importance. On pourrait simplement imaginé un plugin en preDispatch avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->view->user = Zend_Auth::getInstance()->getIdentity()
    de la même qu'on peut le faire dans le bloc init d'un controller.

    Cependant, d'après le message d'erreur, l'objet $this->view n'existe pas dans le plugin. Il n'est donc pas possible de lui attribuer des données.

    Sur le site z-f, on me conseille de:
    - instancier ta vue dans le bootstrap (tu peux la mettre dans la registry si tu veux y accéder n'importe où)
    - tu peux ajouter ce que tu veux dans ta vue depuis ton plugin
    - il faut ensuite assigner cette vue à ton contrôleur à l'aide d'un helper

    Je ne peux tester cette solution que ce soir. En attendant, je suis ouvert à toutes autres propositions.

  4. #4
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Si je te demandais le code, c'était pour vérifier que tu récupérais bien un objet requête en paramètre (Zend_Controller_Request_Abstract).

    Tu dois pouvoir initialiser ta vue dans le plugin directement, en utilisant l'aide viewRenderer.

    Quelque chose comme (le paramètre étant $request) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->init();
    $viewRenderer->view->module = $request->getModuleName();
    $viewRenderer->view->controller = $request->getControllerName();
    $viewRenderer->view->action = $request->getActionName();
    $viewRenderer->view->user = Zend_Auth::getInstance()->getIdentity();

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Oki. Au temps pour moi.
    Voici le code d'appel de mon plugin depuis le bootstrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $frontController->registerPlugin(new My_Plugin_Auth());
    Voici le code de mon plugin (simplifier sur la partie qui nous intéresse)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class My_Plugin_Auth extends Zend_Controller_Plugin_Abstract
    {
     
    	public function preDispatch(Zend_Controller_Request_Abstract $request)
    	{
     
    		$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    		$viewRenderer->init();
    		$viewRenderer->view->module = $request->getModuleName();
    		$viewRenderer->view->controller = $request->getControllerName();
    		$viewRenderer->view->action = $request->getActionName();
    		$viewRenderer->view->user = Zend_Auth::getInstance()->getIdentity();
     
     
    	}
    }
    Cependant, lorsque j'essaie d'afficher le contenu dans la vue, je n'ai rien du tout. Pas d'info et pas non plus de message d'erreur.

    Si je fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo print_r(Zend_Auth::getInstance()->getIdentity());
    Dans mon helper, j'ai bien l'affichage du tableau de mes variables d'authentification.
    C'est donc le passage des variables à la vue qui pose problème (à mon avis).

    Quelle est le problème ?

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Là, je ne vois pas...

    J'ai fais un copier / coller de ta classe dans une application test chez moi, en changeant uniquement le contenu de la propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $viewRenderer->view->user = 'C\'est moi !';
    Et tout fonctionne : j'accède bien à cette propriété dans ma vue...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interdire l'accés aux vues
    Par Catarssis dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 29/01/2013, 16h05
  2. Accès aux vues Agendas et Taches de LotusNote via java
    Par Actarus78 dans le forum Lotus Notes
    Réponses: 5
    Dernier message: 23/08/2011, 09h34
  3. Modification du chemin d'accès aux vues
    Par yamatoshi dans le forum MVC
    Réponses: 6
    Dernier message: 21/05/2010, 12h13
  4. Réponses: 4
    Dernier message: 21/08/2009, 14h57
  5. Droit d'accès aux vues ?!
    Par tibi666 dans le forum Requêtes
    Réponses: 5
    Dernier message: 30/04/2007, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo