1

在 ZF2 中,如何将路由添加为来自另一个模块的路由的子节点?我假设有一种方法可以在某处挂钩事件?

例如,模块 A 为/foo. 在模块 B 中,我想/foo/bar通过创建一个/bar路由作为 'foo' 的子级来添加一个路由。

4

1 回答 1

5

我打算解释一下,但也许举个例子会更好

模块A

提供/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 的子级,它们都指向它们各自的模块控制器。

于 2013-05-16T11:06:17.030 回答