我想在我的bootstrap文件中根据控制器的名称加载一个额外的配置文件,所以我必须在bootstrap中获取控制器的名称(在Zend Framework 1.1中)。这可能吗?
我试过了:
$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
答案 0 :(得分:4)
您需要首先通过引导前端控制器来初始化请求对象
Bootstrap类中的用法示例:
$this->bootstrap('frontController');
$request = $this->getResource('frontController')->getRequest();
$controller = $request->getControllerName();
您不应该通过。
在引导程序文件中使用请求对象更好的解决方案是使用前端控制器插件及其pre-/postDispatch()
方法来实现此目的。
如果你背后有更复杂的逻辑,或者你需要为每个控制器提供更方便的方法,你可以扩展Zend_Controller_Action类。
答案 1 :(得分:4)
您必须先启动前端控制器才能使用它。
$bootstrap->bootstrap('frontController');
$front = $bootstrap->frontController;
$controller = $front->getRequest()->getControllerName();
答案 2 :(得分:4)
你也可以这样做:
$router = new Zend_Controller_Router_Rewrite();
$request = new Zend_Controller_Request_Http();
$router->route($request);
$request->getActionName();