Sie Plugin erstellen können, die Ihre Anfrage auf aktuellen Modul setzt Errorcontroller untersuchen wird und basiert ...
<?php
class My_Controller_Plugin_ErrorControllerSwitcher extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown (Zend_Controller_Request_Abstract $request)
{
$front = Zend_Controller_Front::getInstance();
if (!($front->getPlugin('Zend_Controller_Plugin_ErrorHandler') instanceof Zend_Controller_Plugin_ErrorHandler)) {
return;
}
$error = $front->getPlugin('Zend_Controller_Plugin_ErrorHandler');
$testRequest = new Zend_Controller_Request_Http();
$testRequest->setModuleName($request->getModuleName())
->setControllerName($error->getErrorHandlerController())
->setActionName($error->getErrorHandlerAction());
if ($front->getDispatcher()->isDispatchable($testRequest)) {
$error->setErrorHandlerModule($request->getModuleName());
}
}
}
Dann
verwenden
$front = Zend_Controller_Front::getInstance();
$front -> registerPlugin(new My_Controller_Plugin_ErrorControllerSwitcher())
das Plugin mit dem Frontcontroller zu registrieren. Danke, JohnP, dass du das gezeigt hast.
Sie können $ front-> hasPlugin ($ name); – takeshin
+1 funktioniert wie ein Zauber und für jeden, der sich fragt, wo das Plugin instanziiert werden soll. Putting 'Zend_Controller_Front :: registerPlugin (neue My_Controller_Plugin_Utilities())' in Ihrem Bootstrap wird es tun. – JohnP
Bitte beachten Sie, dass ich den Code aktualisiert (den Klassennamen geändert) habe, so dass Copy & Paste mehr Sinn machen würde. Es war Teil meiner Utilities-Klasse und sollte nun beschreibender sein. –