2010-12-12 8 views
2

Je mis en place par défaut errorHandler en Bootstrap.php ainsi:Comment configurer ErrorHadler via application.ini?

public function _initErrorHandler() 
{ 
    $frontController = Zend_Controller_Front::getInstance(); 
    $plugin = new Zend_Controller_Plugin_ErrorHandler(
     array(
      'module' => 'default', 
      'controller' => 'error', 
      'action' => 'error' 
    )); 
    $frontController->registerPlugin($plugin); 

    return $plugin; 
} 

Comment puis-je faire la même via application.ini options?

+1

n'est pas le gestionnaire d'erreurs actif par défaut? – opHASnoNAME

+0

@ArneRie Oui, c'est. Mais dans le module par défaut. J'ai besoin d'un moyen facile de le changer, lorsque je mets l'autre module par défaut. – takeshin

+0

Regardez: https://github.com/codeinchaos/restful-zend-framework#module-specific-errorcontroller-issue – falko

Répondre

1

Si vous voulez dire "automatiquement", je ne pense pas que ce soit possible, puisque le plugin ErrorHandler n'est pas un plugin de ressources.

Mais, si vous voulez amorcer votre propre gestionnaire d'erreur personnelle, vous pouvez faire quelque chose comme ceci:

dans votre application.ini:

errorhandler.class = "Zend_Controller_Plugin_ErrorHandler" 
errorhandler.options.module = default 
errorhandler.options.controller = error 
errorhandler.options.action = error 

Et, dans votre bootstrap pour charger ces options :

public function _initErrorHandler() 
{ 
    // make sure the frontcontroller has been setup 
    $this->bootstrap('frontcontroller'); 
    $frontController = $this->getResource('frontcontroller'); 
    // option from the config file 
    $pluginOptions = $this->getOption('errorhandler'); 
    $className  = $pluginOptions['class']; 

    // I'm using zend_loader::loadClass() so it will throw exception if the class is invalid. 
    try { 
     Zend_Loader::loadClass($className); 
     $plugin   = new $className($pluginOptions['options']); 
     $frontController->registerPlugin($plugin); 
     return $plugin; 
    } catch (Exception $e) { 
     // do something useful here (like fall back to the default error handler) 
     echo $e->getMessage(); 
     return null; 
    } 
} 
+0

Merci. C'est quelque chose que je fais déjà, mais je cherchais le moyen d'ignorer le code dans Bootstrap. – takeshin

Questions connexes