如何保留默认的Zend路由

Kim*_*nce 4 zend-framework zend-route

我正在尝试设置有意义的URL,例如http://www.site.com/company/department,但它会破坏我在Controller/Action形状中的现有URL.

在我的bootstrap中,我按如下方式创建新路由:

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

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

有没有办法让Zend首先进行默认的 Controller/Action匹配,并且只在失败时恢复到Browse路由?

谢谢!

Fat*_*moo 5

路由在LIFO上处理,你需要做这样的事情:

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

相反,您可能只想要在"浏览"路径中添加"静态"组件.这会更具体:

$route = new Zend_Controller_Router_Route("browse/:company/:dpt", array('controller'   => 'browse'));
Run Code Online (Sandbox Code Playgroud)

IMO,第二个是更好的选择