我正在尝试在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 /。谁能看到我在这里做错了什么?
答案 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',
)
),
),
),
),
我想这应该会好起来的。这是一个很好的建议,不要有斜杠,因为你理想情况下总是希望开始新的路线,以便更好的可读性;)