我的问题是关于Zend Framework 2.我有两条重叠的路线 - 一条是以下形式:
/announcements/index[/:type][/:status]
和另一个:
/announcements[/:action][/:id]
它们在配置中按照与上面相同的顺序定义。
目的是几乎所有的路由都有相同的模式,即action + ID,但是对于显示项目列表的索引页面,我想要过滤的可能性 - 我希望用户能够过滤按类型和状态公布(接受/拒绝/等待审核)。问题是由于某种原因,当我转到/ announcements或/ announcements / index时,路由器选择第二条路由作为活动路由。解决这个问题的最佳想法是什么?
感谢。
答案 0 :(得分:3)
儿童路线是要走的路,但是通过用自己的路线定义特殊情况,可以让您的生活更轻松。
在我的例子中,'index'子路由在'default'之前定义,意味着路由器将首先匹配此路由。
'announcements' => array(
'type' => 'Literal',
'options' => array(
'route' => '/announcements',
'defaults' => array(
'controller' => 'Application\Controller\Announcements',
'action' => 'index'
)
),
'may_terminate' => true,
'child_routes' => array(
'index' => array(
'type' => 'Segment',
'options' => array(
'route' => '/index[/:type][/:status]',
'defaults' => array(
'controller' => 'Application\Controller\Announcements',
'action' => 'index',
),
),
'may_terminate' => true,
),
'default' => array(
'type' => 'segment',
'options' => array(
'route' => '/:action/:id',
'defaults' => array(
'controller' => 'Application\Controller\Announcements',
),
),
'may_terminate' => true,
),
),
),