我为我的 ZF 应用程序设置了 2 条类似的路线,其中一条有效,另一条无效。这个显示数据库中的项目供用户查看,效果很好:
在我的引导程序中路由:
//Static item profile
$route = new Zend_Controller_Router_Route('item/:item_id',
array('controller'=> 'item',
'action'=> 'index'));
$router->addRoute('item', $route);
我在项目控制器的索引操作中获取项目 ID 的位置:
$id = $this->getRequest()->getParam('item_id');
我在后端设置了这个,以允许管理员编辑项目数据:
//Management back end
$route = new Zend_Controller_Router_Route('manage/edititem/:item_id',
array('controller'=> 'manage',
'action'=> 'edititem'));
$router->addRoute('manage', $route);
这就是我在管理控制器的 edititem 操作中获得 id 的地方:
$item_id = $this->getRequest()->getParam('item_id');
出于某种原因,如果我导航到 /manage/edititem/:item_id,此项目中的 item_id 总是为空,但如果我转到 /manage/edititem/item_id/:item_id,它工作得非常好。如果我尝试使用自定义路由,为什么路由不起作用?它没有被更早的路线捕获,因为它仍在执行 edititem 操作中的代码,我没有遗漏它上面的任何分号,我复制并粘贴了它,所以我怀疑这是一个错字。我的路线可能有什么问题?