0

我有两个模块应该覆盖其他网址,基本上

/management/category/edit/id/1(编辑类别页面)

/management/category/index(管理模块中Category的索引页)

/management/category(管理模块中类别的索引页)

/women-like-men/category(从 /default/category/view/id/women-like-men 路由的 URL)

以上规则为:

    $router->addRoute('view-category',      new Zend_Controller_Router_Route(':id/category/:page',  array('module' => 'default', 'controller' => 'category', 'action' => 'view', 'page' => null)));
    $router->addRoute('management/category',    new Zend_Controller_Router_Route('management/category/',    array('module' => 'management', 'controller' => 'category', 'action' => 'index')));

有很多类似的页面存在“冲突”(画廊、电影、用户)等。

我真正想要的是一条规则,它说 /management/* 路由到模块管理/控制器/操作并忽略下面的规则,任何带有 /management 的内容。无论如何,用户/画廊/电影/类别被称为管理的可能性很低。

是否可以?

编辑,我做了这个:

    $router->addRoute('administration',         new Zend_Controller_Router_Route_Regex('management/?(.*)/?(.*)', array('module' => 'management'), array(1 => 'controller', 2 => 'action')));

/management/category 工作正常,但是之后的任何内容都会导致 404

4

1 回答 1

1

这应该很简单。定义路线的顺序很重要 - 它们以相反的顺序检查,因此为了让您的管理规则“覆盖”您希望最后定义的其他规则(即在所有其他路线之后)。像这样的东西(基本上就是你所拥有的)应该可以工作:

$route = new Zend_Controller_Router_Route(
    'management/:controller/:action/*',
    array(
        'module' => 'management'
        'controller' => 'index',
        'action' => 'index'
    )
);
$router->addRoute('management', $route);

如果您的任何管理 URL 在此之后仍然是 404,那么它们不匹配该路由,因此它需要调整或者您需要一些其他管理路由来匹配其他情况。

于 2011-02-16T23:47:51.273 回答