0

我正在尝试在 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',
                )
            ),
        ),
    ),
),

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

/kategoier/test-test-test-test-test/1/

但这从来没有与任何东西相匹配。我得到错误:

请求的 URL 无法通过路由匹配。

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

4

1 回答 1

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

我想这应该可以解决。最好不要使用尾部斜杠,因为理想情况下,您总是希望以一条开始新路线以获得更好的可读性;)

于 2012-11-12T21:42:09.723 回答