1

ZF2 で、別のモジュールからのルートの子としてルートを追加するにはどうすればよいですか? どこかでイベントにフックする方法があると思いますか?

たとえば、モジュール A は のルートを定義し/fooます。モジュール B では、「foo」ルートの子としてルートを/foo/bar作成して、ルートを追加したいと思います。/bar

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 に答える