我有一个包含 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 别名来匹配相同的控制器名称?