在Bootstrap中获取控制器名称
问题描述:
我想根据控制器的名称在我的引导文件中加载额外的配置文件,所以我必须在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
答
您必须首先引导前端控制器才能使用它。
$bootstrap->bootstrap('frontController');
$front = $bootstrap->frontController;
$controller = $front->getRequest()->getControllerName();
答
您需要通过自举前端控制器的使用
例首先初始化请求对象in Bootstrap class:
$this->bootstrap('frontController');
$request = $this->getResource('frontController')->getRequest();
$controller = $request->getControllerName();
您不应该在引导文件中使用请求对象。
更好的解决方案是使用前端控制器插件及其pre-/postDispatch()
方法来实现此目的。
如果你有更复杂的逻辑,或者你需要更进一步的方便,你可以扩展Zend_Controller_Action类。
答
你能做到这样也:
$router = new Zend_Controller_Router_Rewrite();
$request = new Zend_Controller_Request_Http();
$router->route($request);
$request->getActionName();
+1。控制器插件将是我会去的方式。 – 2012-01-10 21:01:42
我加了Songos解决方案,写得更容易理解。 – 2012-01-11 18:49:20
对不起,但最初的答案是我自己解析URL,所以我无法赞成,特别是当完全改变整个答案时。不能相信人们比接受的答案更有价值。 – 2013-12-10 19:26:41