ZF2儿童路线问题

时间:2012-11-12 21:37:27

标签: php zend-framework2

我正在尝试在ZF2中完成一些基本路由,但我遇到了一些问题。

给我带来麻烦的部分是:

'parent-categories' => array(
    'type' => 'literal',
    'options' => array(
        'route' => '/kategorier/',
        'defaults' => array(
            'controller' => 'categories',
            'action' => 'parent-categories',
        ),
    ),
    'may_terminate' => true,
    'child_routes' => array(
        'child-categories' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/kategorier[/:slug][/:parentCategoryid]/',
                'constraints' => array(
                    'parentCategoryid' => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'categories',
                    'action' => 'child-categories',
                )
            ),
        ),
    ),
),

原来的“父类别”路线运行得很好,没问题。但问题是,子类别路线没有做任何事情。我有网址:

  

/ kategorier /试验试验试验试验试验/ 1 /

但这绝不匹配。我收到错误:

  

路由无法匹配请求的网址。

如果我将子类别路线从“child_routes”部分中取出,它总是捕获请求,即使该网址只是/ kategorier /。谁能看到我在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

子路由附加到父路由。即您目前正在匹配的是

/kategorier//kategorier[/:slug][/:parentCategoryid]/

这样做

'parent-categories' => array(
    'type' => 'literal',
    'options' => array(
        'route' => '/kategorier',
        'defaults' => array(
            'controller' => 'categories',
            'action' => 'parent-categories',
        ),
    ),
    'may_terminate' => true,
    'child_routes' => array(
        'child-categories' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '[/:slug][/:parentCategoryid]',
                'constraints' => array(
                    'parentCategoryid' => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'categories',
                    'action' => 'child-categories',
                )
            ),
        ),
    ),
),

我想这应该会好起来的。这是一个很好的建议,不要有斜杠,因为你理想情况下总是希望开始新的路线,以便更好的可读性;)