Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Sur presque l'ensemble de mes controllers, je récupère l'année sélectionnée ou l'année qui se trouve dans ma session dans le cas ou 'internaute n'a pas sélectionné une année. Afin d’optimiser mon code, je veux utiliser le bout de code dans mon _initController du Bootstrap comme suit:
protected function _initController(){ $this->bootstrap('FrontController'); $controller = $this->getResource('FrontController'); $info = new Zend_Session_Namespace('test'); $controller->view->anneeEncours = trim($controller->getParam("encours")); if (!empty($controller->view->anneeEncours)){ $info->array = array( 'annee' => $controller->view->anneeEncours ); } else { $tabInfo = $info->array; $controller->view->anneeEncours = $tabInfo['annee']; } }
Ca ne marche pas mais pas d'erreur non plus. Je souhaite que celui qui voit comment résoudre puisse m'apporter son aide. Sans doute $controller->view->anneeEncours doit pas être la bonne.
Merci d'avance!
Dernière modification par guence (08-09-2010 15:07:51)
Hors ligne
Le bootstrap est initialisé avant que le trio module/contrôleur/action ne soit connu donc tu ne peux pas leur passer de valeurs vu qu'ils n'existent pas encore.
Une solution serait de stocker le résultat dans un Zend_registry puis récupérer la valeur la ou t'en a besoin.
Dernière modification par Manax (08-09-2010 14:11:53)
Hors ligne
Une autre solution qui n'utilise pas le Zend_Registry, est de passer par un action helper et d'utiliser une fonction preDispatch().
Au sein de cette fonction tu va récupérer ton année et l'ajouter à la vue et/ou au paramètre transmis à ton controller.
class MonModule_Controller_Action_Helper_Anne extends Zend_Controller_Action_Helper_Abstract { protected function preDispatch() { $controller = $this->getActionController(); $info = new Zend_Session_Namespace('test'); $controller->view->anneeEncours = trim($controller->getParam("encours")); if (!empty($controller->view->anneeEncours)){ $info->array = array( 'annee' => $controller->view->anneeEncours ); } else { $tabInfo = $info->array; $controller->view->anneeEncours = $tabInfo['annee']; } } }
et dans ton Bootstrap :
protected function _initHelper() { $this->bootstrap('FrontController'); Zend_Controller_Action_HelperBroker::addHelper(new Cms_Controller_Action_Helper_Current()); }
Hors ligne
Merci pour vos suggestions. Je pense que la solution est trouvée grâce à vous. je verrai parmi les deux propositions laquelle implémenté.
Encore mille merci
Hors ligne
C'est fait.
J'ai implémenté la solution avec l'aide d'action. C'est ce que je voulais et ça marche nikel!!!!
Mille merci à My_Sic et à Manax.
Hors ligne
Pages: 1