Zend2隔离模块配置

时间:2013-02-07 22:35:02

标签: zend-framework2

似乎Module.php方法中getConfig中定义的所有配置设置都在应用程序中全局合并。这对我的情况来说很奇怪,因为我需要为每个模块配置不同的配置:数据库设置,一些工厂和view_manager设置,这些设置当前被加载的最后一个模块覆盖。如何在某个模块中使用独占的配置是该模块中$this->getServiceLocator()->get('Config')的范围。我现在唯一的想法就是在调度事件中将我的模块配置与$this->getServiceLocator()->get('Config')合并,如果这是唯一的情况,那么优先使用什么优先级,以便我可以利用所有设置:view_manager,service_manager等?

对我来说,理想的解决方案是,如果某些名称空间的配置设置仅在该名称空间下使用。

2 个答案:

答案 0 :(得分:2)

您可以根据需要嵌套配置值。

成像你有一个名为“mymodule”的模块,它需要连接到一个特殊的模块特定数据库(与整个应用程序的主数据库不同)。你会做这样的事情:

<强> mymodule.global.php.dist:

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

然后确保myModule正在查看$config['mymodule']['db'],而不是$config['db']

答案 1 :(得分:0)

您可以通过以下方式获取模块的配置设置:

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