2

我想根據控制器的名稱在我的引導文件中加載額外的配置文件,所以我必須在bootstrap中獲取控制器的名稱(在Zend Framework 1.1中)。這可能嗎?在Bootstrap中獲取控制器名稱

我已經試過:

$front = Zend_Controller_Front::getInstance(); 
$controller = $front->getRequest()->getControllerName(); 

但是,這並不工作:

Fatal error: Call to a member function getControllerName() on a non-object in [path]\application\Bootstrap.php on line 10 

回答

4

您必須首先引導前端控制器才能使用它。

$bootstrap->bootstrap('frontController'); 
$front = $bootstrap->frontController; 
$controller = $front->getRequest()->getControllerName(); 
4

您需要通過自舉前端控制器的使用

例首先初始化請求對象in Bootstrap class:

$this->bootstrap('frontController'); 
$request = $this->getResource('frontController')->getRequest(); 
$controller = $request->getControllerName(); 

您不應該在引導文件中使用請求對象。

更好的解決方案是使用前端控制器插件及其pre-/postDispatch()方法來實現此目的。

如果你有更復雜的邏輯,或者你需要更進一步的方便,你可以擴展Zend_Controller_Action類。

+2

+1。控制器插件將是我會去的方式。 – 2012-01-10 21:01:42

+0

我加了Songos解決方案,寫得更容易理解。 – 2012-01-11 18:49:20

+0

對不起,但最初的答案是我自己解析URL,所以我無法贊成,特別是當完全改變整個答案時。不能相信人們比接受的答案更有價值。 – 2013-12-10 19:26:41

3

你能做到這樣也:

 $router = new Zend_Controller_Router_Rewrite(); 
     $request = new Zend_Controller_Request_Http(); 
     $router->route($request); 
     $request->getActionName(); 
相關問題