2013-03-26 94 views
1

我想擴展標準的Zend \ ModuleManager \ ModuleManager,可以嗎? 例如,我想從數據庫加載模塊列表,我想添加一些方法來處理模塊。如何在Zend Framework 2中擴展moduleManager?

如果我設置工廠的ServiceManager:

'service_manager' => array(
    'factories' => array(
     'moduleManager' => 'Path/To/My/ModuleManager', 
    ), 
), 

有錯誤ModuleManager會「的名稱或別名服務‘’已經存在,並且不能被覆蓋,請使用備用名」

回答

2

的Zend Framework 2中的模塊管理器是通過服務工廠類創建的。 ModuleManager映射到Zend\Mvc\Service\ModuleManagerFactory。我建議你看看這個ModuleManagerFactory,看看createService()模塊管理器注入了什麼對象。

如果要擴展並使用自己的模塊管理器,則必須創建一個擴展ModuleManager的類,但也要創建一個覆蓋Zend \ Mvc \ Service \ ModuleManagerFactory的服務管理器工廠。您使用以下代碼的方式正確,但將此代碼放在/config/application.config.php文件中很重要,因爲這是Zend \ Mvc用來創建主要服務的配置文件。

// config/application.config.php 
'service_manager' => array(
    'factories' => array(
     'ModuleManager' => 'Path/To/My/ModuleManagerFactory', // <-- Path to MM factory 
    ), 
), 

下面的鏈接會給你什麼樣的默認服務與\ Zend的\的mvc運行,如何以及在哪裏發生這種情況良好的信息:

https://zf2.readthedocs.org/en/latest/modules/zend.mvc.services.html

希望這有助於,反饋會讚賞:)

Stoyan