Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'aimerai dans une action savoir si mon action est appelé depuis une autre action via _forward() ou non.
le code du _forward (ci dessous) dans le ZF modifie l'objet request.
donc je me demande si l'on peut savoir d'ou l'on vient ?
merci d'avance de vos lumières
final protected function _forward($action, $controller = null, $module = null, array $params = null) { $request = $this->getRequest(); if (null !== $params) { $request->setParams($params); } if (null !== $controller) { $request->setControllerName($controller); // Module should only be reset if controller has been specified if (null !== $module) { $request->setModuleName($module); } } $request->setActionName($action) ->setDispatched(false); }
Hors ligne
Tu peux utiliser l'argument $params pour passer un flag dans le pire des cas.
Hors ligne
vi j'y ai pensé, mais j'imaginais qu'il existait quelquechose dans le frontCrontroller ou l'objet request ....
Hors ligne
Actuellement, rien d'implémenté originellement pour ceci.
En revanche, un nouveau action helper va bientot faire son apparition, son nom est plus qu'explicite : actionStack.
Il sera ainsi possible d'empiler une suite d'actions dans ce plugin, qui vont se dérouler dans un ordre précis. Il y aura donc moyen de savoir où on en est dans la pile, ce qui est très pratique (dans le cas de grosses applications, ca va de soi ).
Je vais peut-être intégrer cette nouveauté dans mon prochain article, consacré à Zend_Layout (en cours d'écriture)
Hors ligne
re-bonjour
peut-on m'expliquer pourquoi _forward est declarée final ?
Je pensais redefinir _forward pour y ajouter mon flag mais la c'est impossible ...
je ne me vois pas repasser sur tout mes appel à _forward pour y ajouter un parametre ...
quel serait la meilleur solution pour mettre mon flag sans le passer à chaque appel du _forward ? dans le predispatch ?
Hors ligne
pour la petite histoire:
finalement je stocke dans le registry les valeurs des module, controleur, action, dans le preDispatch
puis dans le postDispatch je verifie si elle ont changées si oui -> j'ai fait un _forward .
ca me permet de stocker dans un tableau la "chaine de mes actions".
Dernière modification par ichevc02 (09-01-2008 16:52:33)
Hors ligne
Pages: 1