Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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
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
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
merci infiniment
Hors ligne