ZF2 - 两条重叠模式的路线

时间:2014-07-21 00:49:00

标签: zend-framework2 zend-route

我的问题是关于Zend Framework 2.我有两条重叠的路线 - 一条是以下形式:

/announcements/index[/:type][/:status]

和另一个:

/announcements[/:action][/:id]

它们在配置中按照与上面相同的顺序定义。

目的是几乎所有的路由都有相同的模式,即action + ID,但是对于显示项目列表的索引页面,我想要过滤的可能性 - 我希望用户能够过滤按类型和状态公布(接受/拒绝/等待审核)。问题是由于某种原因,当我转到/ announcements或/ announcements / index时,路由器选择第二条路由作为活动路由。解决这个问题的最佳想法是什么?

感谢。

1 个答案:

答案 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,
        ),

    ),
),