Zend Framework - 从bootstrap获取前端控制器?

时间:2009-11-29 17:49:19

标签: zend-framework

我正在尝试使用此代码将路由实现到我的引导程序文件中;

protected function _initRoutes()
{
    $router = $this->getResource('frontController')->getRouter();

    $router->addRoute(
        'profil',
        new Zend_Controller_Router_Route
        (
            'profil/:username',
            array
            (
                'controller' => 'users',
                'action'    => 'profil'
            )
        )
    );
}

但它不起作用,因为我在'错误中的非对象上调用成员函数getRouter()。

如何从bootstrap中获取控制器?

2 个答案:

答案 0 :(得分:7)

我相信你的问题就在于你打电话的地方

$this->getResource('frontController')->getRouter()

FrontController资源尚未初始化。

我以这种方式调用相同的方法(在Zend Framework 2.0中不起作用,但现在可以使用):

Zend_Controller_Front::getInstance()->getRouter();

或者,您可以确保您的前端控制器已初始化为:

$this->bootstrap('FrontController');

$front =  $this->getResource('FrontController');

答案 1 :(得分:5)

你可以尝试:

$front  = Zend_Controller_Front::getInstance();
$router = $front->getRouter();

如果你遇到任何问题,这些很可能是你的罪魁祸首:

require_once 'Zend/Controller/Front.php';    
require_once 'Zend/Controller/Router/Route.php';