2014-07-13 19 views
0

我有这样的路由配置:混合行动和鼻涕虫Zend框架2路线

'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. /博客 - >上市的所有博客文章
  2. /博客/创建 - >为创造新的岗位
  3. /博客/本,是最标题后一个职位的看法

路由配置适用于点1和3,但不适用于二号(我得到“请求的控制器无法发送请求。”),有人可以解释我为什么吗?哪个是正确的配置?

+1

把查看后创建路线定义,我认为路线匹配它找到的最后一个路线 – Exlord

+0

你认为正确,它的工作原理!非常感谢。 –

回答

1

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

为同级儿童路线把Segment路线定义在Literals之前。