Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Débutant sous ZF, j'aimerai savoir comment faire pour distribuer un objet sur toute l'appli.
Je m'explique.
Dans mon cas, j'ai une appli mvc avec un layout. Le layout contient un pied de page qui fait donc appel
au sgbd.
Vous comprendrez que ce pied de page est présent dans tous les cas, sur toutes les pages, quel que soit l'action.
Seulement, je pense qu'il y a une technique pour ne pas réécrire le code dans chaque controller et dans chaque action, mais comment factoriser?
Pour l'instant je l'ai écris directement dans la vue, le problème c'est que c'est pas sa place surtout que je fais des try catch ect....
Quelqu'un pour m'éclairer ?
Merci d'avance
Dernière modification par Myfred (17-07-2009 09:35:11)
Hors ligne
Bonjour,
Pour palier à ça j'ai étendu la classe Zend_Controller_Action et j'ai fait hériter tous mes controller de cette classe, ainsi je peux spécifier des variables disponible dans tous mes controllers :
class MyControllerAction extends Zend_Controller_Action { public function preDispatch() { $this->view->module = $this->module = $this->_request->getModuleName(); $this->view->controller = $this->controller = $this->_request->getControllerName(); $this->view->action = $this->action = $this->_request->getActionName(); } } // ... class IndexController extends MyControllerAction { // $this->action est disponible }
Si a peut t'aider
Julien.
Hors ligne
Bizarre comme solution.
Le Zend_Registry permet de balader les objets ou l'on veut dans l'appli. (je réponds à la question la)
L'actionStack ou l'aide de vue 'action' sont de bonnes solutions concernant la création du footer
Hors ligne
Bonjour Norky,
Je n'avais pas pensé au Zend_Registry effectivement ! Par contre peux tu nous en dire un peu plus sur l'actionStack (que je ne connais pas) ou nous donner un lien si possible ?
Merci d'avance
Julien.
Hors ligne
heu avoir un pie de page qui fais appel à la base à chaque appel c'est peut être pas une bonne chose en soit
je ne sais pas ce que tu mets dans ton pied de page mais il est peut être plus logique d'utiliser la session pour ne pas avoir à accéder à la base à chaque fois
A+JYT
Hors ligne
EffigieCreations a écrit:
Bonjour Norky,
Je n'avais pas pensé au Zend_Registry effectivement ! Par contre peux tu nous en dire un peu plus sur l'actionStack (que je ne connais pas) ou nous donner un lien si possible ?
Merci d'avance
Julien.
J'ai pas de lien, mais ca devrait se trouvé sur le net facilement je crois.
Grace à l'action stack, tu prévois l'éxécution à l'avance d'une 2eme action. Tu codes celle-ci pour quelle se mette dans un segment particulier (footer par exemple) et tu n'as plus qu'a mettre <?= $this->layout()->footer?> dans ton layou.phtml
Hors ligne
Une surcharge de Zend_Controller_Action::init(), utilisant le sgbd, couplé a un système de cache si besoin, initialisant une variable de vue (et un petit echo $this->variablePourFooter ou autre) dans le layout pourrait aussi faire l'affaire.
Hors ligne