在zend框架2路线中混合动作和slug

时间:2014-07-13 15:37:38

标签: routes zend-framework2 slug

我有这个路线配置:

'router' => array(
    'routes' => array(
        'blog' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/blog',
                'defaults' => array(
                    'controller' => 'Blog\Controller\Blog',
                    'action' => 'list',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'create' => array(
                    'type' => 'literal',
                    'options' => array(
                        'route' => '/create',
                        'defaults' => array(
                            'action' => 'create',
                        ),
                    ),
                    'may_terminate' => true,
                ),
                'view' => array(
                    'type' => 'segment',
                    'options' => array(
                        'route' => '/[:slug]',
                        'constraints' => array(
                            'slug' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                            'action' => 'view',
                        ),
                    ),
                    'may_terminate' => true,
                )
            ),
        ),
    ),
),

目的是使用以下网址:

  1. / blog - >列出所有博客文章
  2. / blog / create - >用于创建新帖子
  3. / blog / this-is-the-title-title of a post
  4. 路由配置适用于第1点和第3点,但不适用于第二点(我得到"请求的控制器无法发送请求。"),有人可以解释为什么吗?哪个是正确的配置?

1 个答案:

答案 0 :(得分:1)

Router将返回它可以在一组相同级别的子路由中找到的最后一个路由定义。

对于同一级别的子路由,将Segment路由定义放在Literals之前。