Zend framework2 ZF2-具有重叠模式的两条路由

Zend framework2 ZF2-具有重叠模式的两条路由,zend-framework2,zend-route,Zend Framework2,Zend Route,我的问题涉及Zend框架2。我有两条有点重叠的路线-一条是: /announcements/index[/:type][/:status] 另一方面: /announcements[/:action][/:id] 它们在配置中的定义顺序与上面相同 其目的是,我的几乎所有路线都有相同的模式,即action+ID,但对于显示项目列表的索引页面,我希望有过滤的可能性-我希望用户能够按类型和状态(接受/拒绝/等待审核)过滤公告。问题是,由于某种原因,当我转到/announces或/announces

我的问题涉及Zend框架2。我有两条有点重叠的路线-一条是:

/announcements/index[/:type][/:status]
另一方面:

/announcements[/:action][/:id]
它们在配置中的定义顺序与上面相同

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


谢谢。

儿童路线是一条可行之路,但是您可以通过定义具有自己路线的特殊情况来简化您的生活

在我的示例中,“索引”子路由在“默认”之前定义,这意味着路由器将首先匹配此路由

'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,
        ),

    ),
),

儿童路线是一条路要走,但是您可以通过定义具有自己路线的特殊情况来简化您的生活

在我的示例中,“索引”子路由在“默认”之前定义,这意味着路由器将首先匹配此路由

'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,
        ),

    ),
),

儿童路线是一条路要走,但是您可以通过定义具有自己路线的特殊情况来简化您的生活

在我的示例中,“索引”子路由在“默认”之前定义,这意味着路由器将首先匹配此路由

'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,
        ),

    ),
),

儿童路线是一条路要走,但是您可以通过定义具有自己路线的特殊情况来简化您的生活

在我的示例中,“索引”子路由在“默认”之前定义,这意味着路由器将首先匹配此路由

'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,
        ),

    ),
),

谢谢alex,我删除我的答案是因为它和你一样:)谢谢alex,我删除我的答案是因为它和你一样:)谢谢alex,我删除我的答案是因为它和你一样:)谢谢alex,我删除我的答案是因为它和你一样:)