2013-02-07 5 views
0

Il semble que tous les paramètres de configuration définis dans Module.php dans la méthode getConfig sont fusionnés globalement dans l'application. C'est assez bizarre pour mon cas, car j'ai besoin de configs différentes pour chaque module: les paramètres de base de données, certaines usines et les paramètres view_manager qui sont actuellement remplacés par le dernier module chargé. Comment puis-je utiliser des configs exclusifs pour certains modules est la portée de $this->getServiceLocator()->get('Config') dans ce module. Les seules pensées que j'ai maintenant sont de fusionner ma configuration de module avec $this->getServiceLocator()->get('Config') sur l'événement d'expédition, si c'est le seul cas, quelle priorité est préférable d'utiliser afin que je puisse utiliser tous les paramètres: view_manager, service_manager ect?Zend2 config module isolé

Pour moi, la solution idéale sera si les paramètres configs dans la portée de certains espaces de noms ne seront utilisés que sous cet espace de noms.

Répondre

2

Vous pouvez imbriquer vos valeurs de configuration aussi profondément que vous le souhaitez. Imagerie vous avez un module appelé "mymodule", et il doit se connecter à une base de données spéciale, spécifique au module (distincte du DB principal pour l'application globale). Vous feriez quelque chose comme ceci:

mymodule.global.php.dist:

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

Ensuite, assurez-vous que monModule regarde $config['mymodule']['db'], et non $config['db']

+0

Tout comme décrit ici. S'il y a une configuration spécifique, ajoutez l'espace de noms en tant que premier niveau de votre tableau de configuration et placez tout le reste en dessous. C'est ainsi que tous les modules majeurs le font aussi;) – Sam

0

Vous pouvez obtenir le paramètres de configuration du module de cette manière:

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