Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je suis devant un problème que je trouve assez tordu et avant de faire de grosse bidouille pour le résoudre j'aimerais des conseils qui me permette de rester dans l'esprit de ZF sans faire n'importe quoi.
J'ai 2 controllers A et B qui ont chacun une vue vueA et vueB.
Lorsque je clique sur un lien qui mène vers le controller B, je veux que celui ci execute d'abord le controller A. Donc je fais dans le controller B:
public function preDispatch() {
$this->_helper->actionStack('index', 'ControllerA');
$logger = Zend_Registry::getInstance()->get('logger');
$logger->log('Controller B', Zend_log::DEBUG);
}
et dans le controller A :
public function indexAction() {
$logger = Zend_Registry::getInstance()->get('logger');
$logger->log('Controller A', Zend_log::DEBUG);
}
Et en log j'ai :
[26/04/2009 11:16:28] Controller B
[26/04/2009 11:16:28] Controller A
Alors que je voudrais l'inverse :
[26/04/2009 11:16:28] Controller A
[26/04/2009 11:16:28] Controller B
Comment puis-je faire cela proprement ?
Merci d'avance !
Hors ligne
bon bah j'ai fais hériter mes controllers d'un controller parent qui fait le menu ... mais c'est pas l'idéal d'extends Zend_Controller_Action je crois................)
Hors ligne
Bonjour Severance
Pour répondre à tes questions :
1°/ L'actionStack agit en postdispatch uniquement
Donc s'en servir dans le predispatch du controlleur B, n'empeche pas qu'il va lancer le controlleur A après la distribution de toute action.
2°/ Au contraire un controlleur d'action doit étendre Zend_Controller_Action si ce n'était pas l'idéal elle serait final
3°/ l'idéal serait de connaitre exactement votre besoin
Pourquoi demander à un controlleur de faire appel à un autre controleur ?
Cordialement,
Hors ligne