【发布时间】:2012-04-14 04:17:58
【问题描述】:
我有一个包含 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别名来匹配相同的控制器名称?
【问题讨论】:
-
您可以发布一些配置/DI 吗?
-
我更新了问题,向您展示每个模块和应用程序模块配置注册的 DI 别名配置。
-
查看 Akrabat 网站的配置:akrabat.com/zend-framework-2/… 他为每个模块生成路由器,而不是别名。
-
@Gabriel 谢谢,我想在这里实现的是使用包罗万象的路由,而不是为每个控制器添加单独的路由,但根据 Matthew 的说法,他们一直致力于
per-module solutions,直到那时最好的解决方案是使用特定的每个路由器 -
Akrabat 执行每个模块的工作..
标签: zend-framework2