我有3個模塊和路由CONFIGS像下面的應用程序相同的控制器名稱:Zend框架2 DI別名,在不同的模塊
- admin.domain.tld/[:控制器[:/動作] = >管理
- rest.domain.tld/[:控制器[:/ ID]] =>休息
- 使用domain.tld/[:控制器[:/動作] =>網站
和集每個模塊中所有控制器的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將config與LIFO行爲合併,所以始終從最後一個添加的模塊中獲取'index'別名。
應用程序配置
'modules' => array('Rest','Admin', 'Site'),
當我訪問http://admin.domain.tld/我希望index
別名給Admin\Controller\IndexController
但由於場地模塊(最後註冊)有index
它給Site\Controller\IndexController
如何使用不同的DI別名相同的別名匹配相同的控制器名稱
你可以發佈一些你的配置/ DI嗎? – 2012-04-14 19:44:42
我更新了問題,向您展示了每個模塊和應用程序模塊配置註冊的DI別名配置。 – Komang 2012-04-15 06:08:24
查看來自Akrabat網站的配置:http://akrabat.com/zend-framework-2/overriding-module-configuration-in-zf2/他爲每個模塊生成路由器,而不是別名。 – 2012-04-15 17:42:32