2

我正在尝试使用 routes.ini 和 bootstrap 设置我的 zend 路由,但由于某种原因,它无法按预期进行路由。我的 routes.ini 和 bootstrap.php 如下。

路线.ini

[production]
routes.guestbook.route = "/guestbook"
routes.guestbook.defaults.controller = guestbook
routes.guestbook.defaults.action = index

引导程序.php

protected function _initRoutes() 
{

// Get Front Controller Instance

$front = Zend_Controller_Front::getInstance();

// Get Router
$router = $front->getRouter();

$router->addConfig(new Zend_Config_Ini(APPLICATION_PATH.'/configs/routes.ini', 'production'), 'routes');

}
4

2 回答 2

2

在阅读了您的评论后,我可以断言您可以删除这些语句(配置和引导程序),因为您想要实现的是 zend 框架默认路由器的正常行为,除非您使用模块。

感谢FloydThreepwood记得我写了这个细节。

于 2011-10-24T00:29:10.340 回答
0

配置路由的最简单方法是使用Zend_Application_Resource_Router.

配置在您的application.ini文件中,就是这样,不需要进一步的代码。

看起来您正在使用静态路由(没有可变路径组件),请在您的application.ini文件中尝试此操作

resources.router.routes.guestbook.type = "Zend_Controller_Router_Route_Static"
resources.router.routes.guestbook.route = "guestbook"
resources.router.routes.guestbook.defaults.module = "default"
resources.router.routes.guestbook.defaults.controller = "guestbook"
resources.router.routes.guestbook.defaults.action = "index"

从您的课程中删除该_initRoutes()方法Bootstrap


_init*此外,这只是一个问题,但是当在引导方法中使用其他资源(例如前端控制器)时,您必须确保它们已被正确引导。为此,请像这样检索它们

protected function _initSomething()
{
    // make sure resource is bootstrapped
    $this->bootstrap('frontController');

    // retrieve resource
    $front = $this->getResource('frontController');
}

请参阅http://framework.zend.com/manual/en/zend.application.theory-of-operation.html#zend.application.theory-of-operation.bootstrap.dependency-tracking

于 2011-10-24T01:07:57.900 回答