代码之家  ›  专栏  ›  技术社区  ›  Kemo

Zend框架-从引导程序获取前端控制器?

  •  8
  • Kemo  · 技术社区  · 15 年前

    我正试图用这个代码实现到我的引导文件中的路由;

    protected function _initRoutes()
    {
        $router = $this->getResource('frontController')->getRouter();
    
        $router->addRoute(
            'profil',
            new Zend_Controller_Router_Route
            (
                'profil/:username',
                array
                (
                    'controller' => 'users',
                    'action'    => 'profil'
                )
            )
        );
    }
    

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

    如何从引导程序获取控制器?

    2 回复  |  直到 15 年前
        1
  •  7
  •   Noah Goodrich    15 年前

    我相信你的问题是你打电话的地方

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

    FrontController资源尚未初始化。

    我以这种方式调用了相同的方法(它在Zend Framework 2.0中不起作用,但目前有效):

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

    或者,您可以确保前面的控制器是这样初始化的:

    $this->bootstrap('FrontController');
    
    $front =  $this->getResource('FrontController');
    
        2
  •  5
  •   Corey Ballou    15 年前

    你可以试试:

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

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

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