我正在尝试使用此代码将路由实现到我的引导程序文件中;
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中获取控制器?
答案 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';