在Bootstrap中获取控制器名称

时间:2012-01-10 13:23:15

标签: zend-framework model-view-controller controller bootstrapping

我想在我的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

3 个答案:

答案 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();