4

我正在尝试设置有意义的 URL,例如http://www.site.com/company/department,但是它会影响我现有的处于 Controller/Action 形状的 URL。

在我的引导程序中,我创建了我的新路线,如下所示:

$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$route = new Zend_Controller_Router_Route(":company/:dpt", array('controller'   => 'browse'));
$router->addRoute("browse", $route);

当我浏览到http://www.site.com/ABC_Co/dry_goods时,它会将我路由到 BrowseController 中的 IndexAction。伟大的!问题是我的其他与管理员相关的 URL(例如 /company/create 等)也指向那里。

有什么方法可以让 Zend 首先进行其默认的控制器/动作匹配,并仅在失败时恢复到 Browse 路由?

谢谢!

4

1 回答 1

5

路线在 LIFO 上处理,您需要执行以下操作:

$router->removeDefaultRoutes();
//add your routes
//add in the default route:
$route = new Zend_Controller_Router_Route(":module/:controller/:action"

相反,您可能只想考虑将“静态”组件添加到您的“浏览”路线。这将使更具体:

$route = new Zend_Controller_Router_Route("browse/:company/:dpt", array('controller'   => 'browse'));

IMO,第二个是更好的选择

于 2011-05-16T02:47:14.540 回答