Salut à tous!
Bon autant annoncer la couleur, je débute avec Zend.
Pour cela je fais un petit projet sans pression pour ma boite, en vue d'en attaquer un plus gros dans quelques mois.
Et... C'est un peu la galère. Disons que quand je prends les composants et les concepts uns par uns ça va, mais pour comprendre comment le tout travail ensemble...
Et la je bloque. Dans un premier temps je suis allé au plus simple, mais la je suis devant une problématique insoluble dans l’état actuel de mes connaissances.
Dans mon fichier Bootstrap (j'utilise zendApplication) j'ai :
Chaque action demandée dans l'URL (action corp) déclenche donc 3 actions : header (<html>) / corp (blabla) / footer (</html>). Un layout permet de remettre dans l'ordre les résultats, l'action corp étant executée en 1er...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /** * Initialisation de la pile d'actions **/ protected function _initActionStack() { //$this->getRequest()->getActionName(); $actionStack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack'); $actionStack->actionToStack(new Zend_Controller_Request_Simple('footer', 'index', 'default')); $actionStack->actionToStack(new Zend_Controller_Request_Simple('header', 'index', 'default')); return $actionStack; }
Actuellement, la même action header et footer est lancée quelque soit l'action corp demandée.
Je voudrais que ces actions header et footer soient personnalisables pour chaque action corp (=module/controlleur/action dans l'url).
Pour cela, j'ai un fichier de configuration dans chaque module (j'ai une archi modulaire) de la forme :
De cette manière, le développeur peut spécifier simplement les actions header et footer qu'il veut pour l'action qu'il est en train de coder, ou laisser vide si l'action retourne du json/xml...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [ajax.getcentreAction] header.module=default header.controller=index header.action=header footer.module=defaut footer.controller=index footer.action=footer
Je me suis dis que je pourrait arranger ça (lecture du fichier de config du module, initialisation de l'actionStack en conséquence) dans le _initActionStack() du Bootstrap. Mais apparemment, à cet endroit le routage n'a pas encore été effectué et il est impossible de récupérer le nom de l'action demandée via URL...
Du coup je bloque, je ne vois ni ou ni comment effectuer ce traitement qui débouche sur une pile d'action, variant en fonction d’un fichier de config dont le chemin varie en fonction de l’action demandée via URL (plus tard ça variera aussi en fonction des droits/roles, mais chaque chose en son temps).
A priori, je dirai qu'il faut que ça soit après le routage mais avant l'exécution de l'action, donc au moment du predispatch... Mais concrètement, comment je fais pour agir sur ce truc (ou ailleurs si c'est ailleurs) ?
Y a t'il moyen de régler ça dans le fichier Bootstrap? Dois-je créer un plugin?
Voila, pouvez vous me donner un coup de main sur ce coup?
C'est que je bloque, j'ai une action Ajax qui renvoie du json et du coup c'est imparsable avec l'html du header et du footer...
De manière plus générale, si vous avez des remarques sur cette stratégie, si vous voyez mieux à faire, je suis à l'écoute!
Merci!
Partager