2013-02-07 76 views
0

似乎在Module.phpgetConfig方法中定義的所有配置設置在整個應用程序中全局合併。對我而言,這很奇怪,因爲我需要爲每個模塊配置不同的配置:數據庫設置,一些工廠和view_manager設置,這些設置目前被最後加載的模塊覆蓋。我如何使用配置專用於某些模塊,該模塊中的範圍爲$this->getServiceLocator()->get('Config')。我現在唯一的想法是在調度事件中將我的模塊配置與$this->getServiceLocator()->get('Config')合併,如果這是唯一的情況,那麼優先使用哪個優先級,以便我可以利用所有設置:view_manager,service_manager ect?Zend2隔離模塊配置

對我來說,理想的解決方案是如果配置設置在某些名稱空間的作用域內,將僅在該名稱空間下使用。

回答

2

您可以根據自己的喜好來嵌套配置值。

成像你有一個名爲「mymodule」的模塊,它需要連接到一個特殊的模塊特定的數據庫(與整個應用程序的主DB不同)。你會做這樣的事情:

mymodule.global.php.dist:

return array(
    'mymodule' => array(
     'db' => array('host'=>'localhost', ...) 
    ) 
) 

然後,只需確保Mymodule中是看$config['mymodule']['db'],而不是$config['db']

+0

非常像這裏所述。如果有特定的配置,請將命名空間添加爲配置數組的第一級,並在其下面放置其他所有配置。這也是所有主要模塊都在做的方式;) – Sam

0

你可以得到以這種方式配置模塊的設置:

$moduleManager = $this->getServiceLocator()->get('ModuleManager'); 
$applicationModule = $moduleManager->getModule('Application'); 
$applicationConfig = $applicationModule->getConfig();