Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 20-08-2007 21:55:06

nadia2507
Membre
Date d'inscription: 03-08-2007
Messages: 27

gestion des exceptions URGENT

bonsoir tout le monde,
je veut faire la gestion des exceptions pour mon site , j'ai suivi l'Atelier :Atelier Zend Framework : Gestions des exceptions intégrées dans MVC de Julien Pauli,
disponible l'adresse:
http://julien-pauli.developpez.com/tuto … xceptions/

mais j'ai un probléme tt béte c'est que je sais pas ou mettre les fonction doExit, analyzeError...

ça doit etre dans une classe mais je sais pas comment la nommé ni où la mettre

j'attend votre aide

Hors ligne

 

#2 21-08-2007 12:49:07

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Re: gestion des exceptions URGENT

Salut, Ca doit être dans la classe dans le bootstrap(index.php), sinon si t'utilises pas de classe qui est mon cas. Personellement,j'ai fais un controlleur qui s'occupe de ca et je redérige toutes les erreurs vers lui.
Dans le bootstrap:
require_once 'Zend/Controller/Plugin/ErrorHandler.php';
$controller->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(
                    array('module'     => 'default',
                          'controller' => 'Error',
                          'action'     => 'error')));

J'ai un controlleur ErrorController qui se situe dans le module default et j'appelle la fonction errorAction lors d'une erreur.

Cordialement

Hors ligne

 

#3 21-08-2007 13:29:50

nadia2507
Membre
Date d'inscription: 03-08-2007
Messages: 27

Re: gestion des exceptions URGENT

est ce que tu sais comment je dois la mettre

car dans le bootstrap ilya ke des declaration ya pa de classe
et si je doi déclarer une classe dedans comment dois je la nommer

sinon est ce que tu peut me donner plus de détail pr ta methode.

merci infiniment

Hors ligne

 

#4 21-08-2007 14:55:10

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Re: gestion des exceptions URGENT

class ErrorController extends Zend_Controller_Action
{
    private $_exception;
    private static $errorMessage;
    private static $httpCode;
    private $message;
   
    public function preDispatch()
    {
        $this->_helper->viewRenderer->setNoRender(true); // ne rend aucune vue autommatiquement
        $this->_exception = $this->_getParam('error_handler');
        $this->_response->clearBody(); // on vide le contenu de la réponse
        $this->_response->append('error',null); // on ajoute un segment 'error' dans la réponse
       
       
        switch ($this->_exception->type) {
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
                self::$httpCode = 404;
                self::$errorMessage = 'Page introuvable';
            break;
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER:
                switch (get_class($this->_exception->exception)) {
                        case 'Zend_View_Exception' :
                                self::$httpCode = 500;
                                self::$errorMessage = 'Erreur de traitement d\'une vue';
                        break;
                        case 'Zend_Db_Exception' :
                                self::$httpCode = 503;
                                self::$errorMessage = 'Erreur de traitement dans la base de données';
                        break;
                        case 'Metier_Exception' :
                                self::$httpCode = 200;
                                self::$errorMessage = $this->_exception->exception->getMessage();
                        break;
                        case 'Autre_Exception' :
                                self::$httpCode = 500;
                                self::$errorMessage = 'Exemple avec une "autre exception"';
                        break;
                        default:
                                self::$httpCode = 500;
                                self::$errorMessage = 'Erreur inconnue';
                        break;
                }
            break;
        }
       
    }
   
    public function errorAction()
    {
        $this->getResponse()->setHttpResponseCode(self::$httpCode);
        $this->_errorMessage .= sprintf("<p>%s</p>",self::$errorMessage);
        //$this->render();
    }
   
    public function postDispatch()
    {
        $this->getResponse()->appendbody($this->_errorMessage,'error');
        $this->getResponse()->appendbody('<a href="javascript:history.back()">retour</a>','error');
        $message=sprintf('Exception de type %s  %s envoyée dans %s à la ligne %d \n',
                                                        get_class($this->_exception->exception),
                                                        $this->_exception->exception->getMessage(),
                                                        $this->_exception->exception->getFile(),
                                                        $this->_exception->exception->getLine());
                                                        //Zend_Debug::dump($this->_exception->exception,null,false));
        //Zend_Registry::get('logger')->debug($message);
                                                      
        $this->getResponse()->append('debug',$this->message);
     
    }

Et dans ton bootstrap tu mets les 2 lignes que je t'ai donnée.

Cordialement

Hors ligne

 

#5 21-08-2007 14:56:14

nadia2507
Membre
Date d'inscription: 03-08-2007
Messages: 27

Re: gestion des exceptions URGENT

merci infiniment

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