以下のような 3 つのモジュールとルート構成を持つアプリケーションがあります。
- admin.domain.tld/[:controller[:/action]] => 管理者
- rest.domain.tld/[:controller[:/id]] =>残り
- domain.tld/[:controller[:/action]] => サイト
各モジュールのすべてのコントローラーにDIエイリアスを設定します
REST モジュール DI エイリアス:
'alias' => array(
'index' => 'Rest\Controller\IndexController',
...
),
管理モジュール DI エイリアス:
'alias' => array(
'index' => 'Admin\Controller\IndexController',
...
),
サイト モジュール DI エイリアス:
'alias' => array(
'index' => 'Site\Controller\IndexController',
...
),
ご覧のとおり、一部のコントローラーは同じ名前 (例: IndexController
) を持っていますが、zf2 は設定を LIFO 動作とマージしたため、'index' エイリアスは常に最後に追加されたモジュールから取得されます。
アプリケーション構成
'modules' => array('Rest','Admin', 'Site'),
http://admin.domain.tld/にアクセスすると、index
エイリアスが返されると予想されますAdmin\Controller\IndexController
が、サイトモジュール (最後に登録) には同じエイリアスがあるためindex
、 Site\Controller\IndexController
異なる DI エイリアスを使用して同じコントローラー名に一致させる方法は?