我正在使用zf2,我已经定义了这样的子路由。
'routes' => array(
'test' => array(
'type' => 'Literal',
'options' => array(
'route' => '/test',
'defaults' => array(
'__NAMESPACE__' => 'Test\Controller',
'controller' => 'Test',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'testABC' => array(
'type' => 'Literal',
'options' => array(
'route' => '/abc',
'defaults' => array(
'action' => 'abc',
),
),
'child_routes' => array(
'testABCDEF' => array(
'type' => 'Segment',
'options' => array(
'route' => '/def/:id',
'defaults' => array(
'action' => 'def',
),
),
),
'testABCXYZ' => array(
'type' => 'Segment',
'options' => array(
'route' => '/xyz/:id',
'defaults' => array(
'action' => 'xyz',
),
),
),
),
),
),
),
),
在这只有一条路线不起作用,我不知道为什么?
答案 0 :(得分:3)
问题是由于您的testABC
路由缺少may_terminate
选项而导致的。
如果它没有子节点,它会隐式终止,但由于它有子节点,你必须明确告知路由器可能性(就像你使用其父test
路由一样。)
'testABC' => array(
'type' => 'Literal',
'options' => array(
'route' => '/abc',
'defaults' => array(
'action' => 'abc',
),
),
'may_terminate' => true, // inform the router
'child_routes' => (
// ...
),
),