定义一些路由后,Zend Framework 中的默认路由


Default routing in Zend Framework after defining some routes

我已经写了一个

项目一段时间了,我使用了默认的路由,:module'':controller:'':action。一段时间后,我在配置中添加了一些路由器,例如:

resources.router.routes.page.route = "page/:slug"
resources.router.routes.page.defaults.module = "default"
resources.router.routes.page.defaults.controller = "pages"
resources.router.routes.page.defaults.action = "view"
resources.router.routes.page.defaults.slug = ""

但是,在那之后,当我单击视图 URL 帮助程序生成的一些链接时,其中包含新路由之一,所有其他链接都会忽略一些给定的参数。例如,我有路由:

resources.router.routes.project.route = "project/:slug"
resources.router.routes.project.defaults.module = "projects"
resources.router.routes.project.defaults.controller = "projects"
resources.router.routes.project.defaults.action = "view"
resources.router.routes.project.defaults.slug = ""

如果我转到链接/项目/测试,则链接如下:

$this->url(
    array('module' => 'admin', 'action' => 'list-users', 'controller' => 'users')
, null,true
);

将指向"/项目"

是否有可能在自定义路由之上维护默认路由?我可以添加一些与默认路由器相同的默认路由器吗?这可能很简单,但我可能错过了重点。感谢您的所有帮助。

我添加了这样的东西,但没有效果:

resources.router.routes.default.route = ":module/:controller/:action"
resources.router.routes.default.defaults.module = "default"
resources.router.routes.default.defaults.controller = "pages"
resources.router.routes.default.defaults.action = "view"
resources.router.routes.default.defaults.slug = ""

为了设置自定义路由,您需要获取路由器组件并将路由传递到其中。

这就是我在我正在从事的一个项目中所做的。在引导类中,创建以下函数

protected function _initRoutes()
{
    $this->bootstrap('frontcontroller');
    $front = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $myRoutes = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini','production');
    $router->addConfig($myRoutes,'routes');

这将调用前端控制器并从中获取路由器。然后我将我的路由配置传递到其中。

我希望这能回答你的问题。

问题是 url 帮助程序的选项如下:

url($urlOptions, $name, $reset)

因此,当您将$name设置为 null 时,将使用当前路由 ('project')。不是事件设置$reset true会有所帮助。将null替换为'default',它应该可以工作。