आप प्लगइन है कि आपके अनुरोध की जांच करने और मौजूदा मॉड्यूल के आधार पर बना सकते हैं सेट ErrorController ...
<?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());
}
}
}
फिर FrontController साथ प्लगइन रजिस्टर करने के लिए
$front = Zend_Controller_Front::getInstance();
$front -> registerPlugin(new My_Controller_Plugin_ErrorControllerSwitcher())
का उपयोग करें। यह इंगित करने के लिए जॉनपी धन्यवाद।
स्रोत
2010-04-27 10:20:06
आप $ front-> हैप्लगिन ($ नाम) का उपयोग कर सकते हैं; – takeshin
+1 एक आकर्षण की तरह काम करता है और किसी को भी यह सोचने के लिए कि प्लगइन को तुरंत चालू करना है। अपने बूटस्ट्रैप में 'Zend_Controller_Front :: registerPlugin (नई My_Controller_Plugin_Utilities())' डालें। – JohnP
कृपया ध्यान दें कि मैंने कोड अपडेट किया है (क्लासनाम बदल दिया है), ताकि कॉपी और पेस्ट अधिक समझ में आए। यह मेरी उपयोगिता वर्ग का हिस्सा था और अब यह और अधिक वर्णनात्मक होना चाहिए। –