我不确定这是否可行,但是......
zf2 ModuleManager将按顺序合并模块的所有配置数组,然后合并任何用户定义的配置数组。因此,如果$config1
与$config2
合并,则会获得$merged
。
$config1 = [
'key1' => 1,
'key2' => 2,
'key3' => 3
]
$config2 = [
'key1' => 'different',
'key4' => 4
]
$merged = [
'key1' => 'different',
'key2' => 2
'key3' => 3
'key4' => 4
]
这很棒,适用于大多数情况。但是,如果我想删除密钥怎么办?如果我上面有$config1
,并希望在下面创建此备用$merged
,那么$config2
的值应该是什么(请注意key2
已删除)?
$merged = [
'key1' => 'different',
'key3' => 3
'key4' => 4
]
答案 0 :(得分:6)
现在已在zf2 master中修复。可能在zf2 2.3中。请参阅这个伟大的教程,了解它是如何完成的(参见MERGE_CONFIG事件)
BTW在撰写本教程时仍然只是一个公关,而不是官方文档。
答案 1 :(得分:2)
我们可以将任何module.php用于目的(您可以根据需要使其具体化)。
尝试以下代码
pulbic function init(){
$events = StaticEventManager::getInstance();
$events->attach('Zend\Mvc\Controller\AbstractActionController', 'dispatch', array(
$this,
'removeMyKey'
), 110);
}
public function removeMyKey($mvcEvent){
$sl = $mvcEvent->getTarget()->getServiceLocator();
$config = $sl->get('Config');
unset($config['key2']);
$sl->set('Config',$config);
return $sl;
}
希望这有助于删除密钥。根据需要进行更改。