3

いくつかの異なるサブドメインから実行する Zend Framework 2 でアプリケーションを作成しています。物事を整理するために、サブドメインごとに異なるモジュールを用意したいと考えています。

私の問題は、ルーティングに複数のサブドメインを追加すると、サブドメインの 1 つが失われることです。

例: このセットアップは testbed.localhost (モジュール/アプリケーション) a.testbed.localhost (モジュール/A) で動作します

追加のものを追加すると、すべてのリクエストが Application Index Controller にルーティングされます

例 testbed.localhost (モジュール/アプリケーション)、a.testbed.localhost (モジュール/A)、b.testbed.localhost (モジュール/B)

これは、module/A の module.config.php です。

    'router' => array(
    'routes' => array(
        'ads' => array(
            'type'    => 'Hostname',
            'options' => array(
                 'route'    => 'a.testbed.localhost', 
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    '__NAMESPACE__' => 'A\Controller',
                    'controller' => 'A\Controller\A',
                    'action'     => 'index',
                ),
            ),

そして、これはmodule/Bのmodule.config.phpのルートです

    'router' => array(
    'routes' => array(
        'ads' => array(
            'type'    => 'Hostname',
            'options' => array(
                 'route'    => 'b.testbed.localhost', 
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    '__NAMESPACE__' => 'B\Controller',
                    'controller' => 'B\Controller\B',
                    'action'     => 'index',
                ),
            ),

これで、両方の module.config.php ファイルで名前空間が正しくなりました。気づいたのは、config/application.config.php からサブドメインへの参照を削除すると、サブドメイン a.testbed.localhost が機能することです。

    <?php
    return array(
        'modules' => array(
         'Application',
         'A',
         'B', <--- A doesn't work if B is here
      ),

上記のモジュール配列で A と B を交換すると、B がアプリケーション モジュールに転送され、A が機能します。そのため、複数のサブドメインに問題があるようです。誰かがアイデアを持っていますか/同じことに出くわしましたか?

4

1 に答える 1

2

これは、ルート名が同じであるために発生します。ルート名に a-ads と b-ads を試してみると、状況が解決するはずです。

最終的に、構成は一緒にマージされます。最後の配列がマージされると、それより前のものはすべて上書きされます。

于 2013-03-02T14:50:08.153 に答える