Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Dans le cas d'une conception modulaire, la "redirection" en cas d'erreur de fait avec le controller du module par défaut. Et utilise, du coup, de layout du module par défaut.
Comment faire pour que ce soit le layout, du module dans le quel on se trouve, qui soit affiché ? Et surtout est possible ?
Exemple :
Le controller error se trouve dans le module default, et j'ai une erreur dans le module admin. C'est le layout du module default qui est affiché.
Merci de votre aide.
Cordialement.
Hors ligne
Bonjour,
J'ai regardé ton cas et la solution la plus adaptée me semble être de créer un petit plugin pour le FrontController qui se chargera de définir le module en cours pour le plugin ErrorHandler de celui-ci.
Je préfère ne pas définir directement le ErrorHandler avec les bons paramètres dans le Bootstrap, car cela forcerait à avoir un ErrorHandler, et ignorerait l'option de configuration "noErrorHandler" qui peut être définie individuellement par action.
Donc voici comment tu peux faire.
Créer un plugin de cette manière :
<?php class MyProject_Controller_Plugin_ModuleErrorHandler extends Zend_Controller_Plugin_Abstract { public function postDispatch(Zend_Controller_Request_Abstract $request) { $front = Zend_Controller_Front::getInstance(); $errorHandler = $front->getPlugin('Zend_Controller_Plugin_ErrorHandler'); if ($errorHandler) { $errorHandler->setErrorHandlerModule($request->getModuleName()); } } }
Puis déclarer ce plugin dans le Bootstrap de l'application :
protected function _initErrorHandler() { $this->bootstrap('frontcontroller'); $frontController = $this->getResource('frontcontroller'); $frontController->registerPlugin(new MyProject_Controller_Plugin_ErrorHandler()); }
Après je pense avoir quelques autres idées.
Voilà !
Hors ligne
J'ai vue la solution que tu proposes. Et merci de répondre. En attendant j'avais créer un module propre pour les erreurs.
Par contre dans la solution que tu exposes, mais cela implique qu'il y ait un controller error dans chaque module ? Non ?
Hors ligne
Euh oui effectivement, j'avais en fait un peu lu de te travers ta question ! Je n'avais pas compris sur le moment que ce n'était que le layout que tu souhaitais changer. Ma solution permettait de changer la vue aussi...
Il faudrait donc que je réfléchisse à ta vraie problématique.
Hors ligne