Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-08-2009 16:44:09

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

[1.9]Page d'erreur et views

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

 

#2 04-09-2009 10:47:42

SweedyMick
Nouveau membre
Date d'inscription: 06-12-2007
Messages: 9

Re: [1.9]Page d'erreur et views

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 :

Code:

<?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 :

Code:

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

 

#3 04-09-2009 11:29:04

nicko
Membre
Lieu: Chambéry
Date d'inscription: 25-05-2009
Messages: 190

Re: [1.9]Page d'erreur et views

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

 

#4 04-09-2009 15:55:21

SweedyMick
Nouveau membre
Date d'inscription: 06-12-2007
Messages: 9

Re: [1.9]Page d'erreur et views

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages