3

シナリオ:

「バイク」と「車」という名前の 2 つの異なるモジュールを含む fabric という名前の zf2 アプリがあり、次の URL 構造を介して同様の (ただし同じではない) 機能を提供します。

+------------------+-------+-------------------------+-------------+-----------------+--------+
|     Hostname     | Part  |          Page           |   Module    |   Controller    | Action |
+------------------+-------+-------------------------+-------------+-----------------+--------+
| www.fabric.dev   | /     | Company homepage        | Application | IndexController | index  |
| bikes.fabric.dev | /     | Homepage for bikes      | Bike        | IndexController | index  |
| bikes.fabric.dev | /list | Listing of bikes        | Bike        | ListController  | list   |
| cars.fabric.dev  | /     | Homepage for cars       | Car         | IndexController | index  |
| cars.fabric.dev  | /list | Listing of bikes        | Car         | ListController  | list   |
+------------------+-------+-------------------------+-------------+-----------------+--------+

そう、

  • Application、Bike、Car は異なるモジュールと名前空間\Applicationであり、\Bike \Car
  • 同じディレクトリを指す http サーバー上に 3 つの vhost (www..,cars..,bikes..) があります。/www/fabric.dev/public
  • すべてのモジュールには、以下の動作しないサンプルのように、module.config.php ファイルにそれぞれ独自のルーティング定義があります。

    // module/Application/config/module.config.php
    'router' => array(
      'routes' => array(
         'home' => array(
           'type'    => 'Hostname',
           'options' => array(
               'route' => 'www.fabric.dev',
               'defaults' => array(
                 '__NAMESPACE__' => 'Application\Controller'
                 'controller'    => 'Application\Controller\Index',
                 'action'        => 'index',
               ),
            )
         )
       )
     );
    

    // module/Bike/config/module.config.php
    'router' => array(
      'routes' => array(
        'home' => array(
        'type'    => 'Hostname',
        'options' => array(
            'route' =>  'bikes.fabric.dev',
            'defaults' => array(
                '__NAMESPACE__' => 'Bike\Controller'
                'controller'    => 'Bike\Controller\Index',
                'action'        => 'index',
            ),
        ),
        'may_terminate' => true,
        'child_routes' => array(
            'default' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/list',
                    'defaults' => array(
                        'controller'    => 'Bike\Controller\List',
                        'action'        => 'list',
                    ),
                  ),
               ),
            ),
         ),
       )
    )

問題と質問

ホスト名、セグメント、リテラル、正規表現などの zf2 のルーティング クラスについては、ウェブ上に十分なドキュメントが存在しますが、これらの素晴らしいクラスを組み合わせて使用​​する方法についてはありません。

すべてのアプリケーション ソース コードを別の vhost ディレクトリにコピーする以外に、ルーター構成を使用して上記の uri スキームを提供する適切な方法はありますか?

4

1 に答える 1