Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut, je débute avec Zend et je me demandais ceci:
où dois-je placer le code pour une variable qui être disponible pour tout le layout? Je veux avoir la date du jour formatté ainsi: 10 octobre 2010. Dans le Bootstrap? Si oui, comment je l'initialise. Tous les exemples de bootstrap que je trouve ne parle que d'initialisation du view. À quel moment dans le cycle d'execution une tel variable s'initialise-t-elle?
Merci.
Hors ligne
Salut, je me questionne beaucoup sur la structure d'une application avec Zend et je voulais savoir si cette façon de faire était conforme. J'ai des variables, dont j'ai besoin qu'elles aient une portée du header au footer. J'ai créé pour cela un controller parent dont je fais hériter tous mes controllers. Dans la function init du parent, j'initialise les variables en question. Bref, au-lieu de les initialiser dans chaque controllers, je le fais qu'une seul fois. Selon moi, c'est la seul façon logique de faire. En existe-t-il une autre plus conforme?
Merci de prendre le temps de me répondre.
Hors ligne
Pour ma part, je me sert des plugins.
Dans mes projets, j'ai besoin de récupérer dans les vues (dont le layout), le module, controller et action demandé ET en cours.
Ce qui donne ce plugin :
<?php class Plugin_Setup extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { $layout = Zend_Layout::getMvcInstance(); $view = $layout->getView(); $view->currentModule = $request->getModuleName(); $view->currentController = $request->getControllerName(); $view->currentAction = $request->getActionName(); } public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $view = Zend_Layout::getMvcInstance()->getView(); $view->requestModule = $request->getModuleName(); $view->requestController = $request->getControllerName(); $view->requestAction = $request->getActionName(); } }
Ensuite, dans ton Bootsrap, tu ajoutes le plugin
$frontController->registerPlugin(new Plugin_Setup());
Tu peux remarquer qu'il y a deux sortes de variable, les request* et current*.
En fait, les request correspondent aux module, controller, et action demandée réellement (dans l'adresse). Les current eux, sont là pour le module, controller, et action en cours d'exécution.
Par exemple, dans un menu, on a souvent besoin de mettre en avant l'élément actif. Mais si la page demandée est une page requirent l'identification, alors je forward vers un controller et une action différents. Les request permettent de garder une trace des module, controller et action demandés.
J'espère avoir été assez clair.
Dernière modification par Blount (15-10-2010 09:13:35)
Hors ligne