在ZF2中,如何从另一个模块添加路由作为路由的子节点?我假设有办法在某个地方挂钩活动?
E.g。模块A定义/foo
的路由。在模块B中,我想通过创建/foo/bar
路由作为'foo'的子路径来添加路由/bar
。
答案 0 :(得分:5)
我打算尝试解释,但也许一个例子会更好
ModuleA
提供/parent
路线,其路线为/parent/foo
// routes
'router' => array(
'routes' => array(
'parent' => array(
'type' => 'Literal',
'may_terminate' => true,
'options' => array(
'route' => '/parent',
'defaults' => array(
'__NAMESPACE__' => __NAMESPACE__ . '\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'child_routes' => array(
'foo' => array(
'type' => 'Literal',
'options' => array(
'route' => '/foo'
'defaults' => array(
'__NAMESPACE__' => 'ModuleA\Controller',
'controller' => 'Foo',
'action' => 'index',
),
),
),
),
),
),
),
模块B
添加/parent/bar
// routes
'router' => array(
'routes' => array(
'parent' => array(
'child_routes' => array(
'bar' => array(
'type' => 'Literal',
'options' => array(
'route' => '/bar'
'defaults' => array(
'__NAMESPACE__' => 'ModuleB\Controller',
'controller' => 'Bar',
'action' => 'index',
),
),
),
),
),
),
),
当你的应用程序加载模块配置时,ModuleB中的路由定义将与ModuleA合并,你最终将/ foo和/ bar作为/ parent的子节点,两者都指向它们各自的模块控制器。