4

我不确定这是否可能,但是...

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
]
4

2 回答 2

6

这现在在 zf2 master 中得到修复。可能在 zf2 2.3 中。请参阅这个很棒的教程以了解它是如何完成的(请参阅 MERGE_CONFIG 事件)

https://github.com/weierophinney/zf2-documentation/blob/71aac39e9ae78eaca3739458c5a2ccf15f4cdb2c/docs/languages/en/tutorials/config.advanced.rst

顺便说一句,在编写本教程时,它还只是一个 PR,还没有出现在官方文档中。

于 2013-05-30T05:22:56.660 回答
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;
}

希望这有助于删除密钥。根据需要进行更改。

于 2013-03-25T13:02:31.083 回答