ZF3:在EventManager中为ZfcUser注入SharedEventManager

时间:2017-08-20 08:03:35

标签: zend-framework zend-framework3 zfcuser

我正在尝试修改zfcuser的形式并找到了这个解释:

https://github.com/ZF-Commons/ZfcUser/wiki/How-to-modify-the-form-objects-used-by-ZfcUser

然而,它并没有像预期的那样发挥作用。经过昨晚的一些调试后,我发现了一面引导我进入SharedEventManager的attach方法:

https://github.com/zendframework/zend-eventmanager/blob/master/src/SharedEventManager.php#L61

另一方将执行ZfcUser登录表单中的触发器,它将引导我到EventManager:

https://github.com/zendframework/zend-eventmanager/blob/master/src/EventManager.php#L75

我用这样的调试修改了代码:

error_log('check sharedEventManager');
if ($sharedEventManager) {
    error_log('sharedEventManager is there');
    $this->sharedManager = $sharedEventManager;
    $this->setIdentifiers($identifiers);
}

我还在触发ZfcUser \ Form \ Login之前和之后添加了调试:https://github.com/ZF-Commons/ZfcUser/blob/3.x/src/ZfcUser/Form/Login.php#L70

error_log('before zend login form trigger: '.get_class($this));
$this->getEventManager()->trigger('init', $this);
error_log('after zend login form trigger');

文档说,SharedEventManager被注入到EventManager(https://framework.zend.com/manual/2.4/en/modules/zend.event-manager.event-manager.html)中,但看起来并非如此。它只是2.4文档,但更改日志说:EventManagerInterface :: setSharedManager()被删除。现在预计共享管理器将在实例化期间注入。 (https://github.com/zendframework/zend-eventmanager/blob/master/CHANGELOG.md

那么应该将这个SharedEventManager注入哪里?我在https://github.com/ZF-Commons/ZfcUser/blob/3.x/src/ZfcUser/EventManager/EventProvider.php#L47中看到了getEventManager方法。哪个简单用一个新的SharedEventManager创建了一个新的EventManager。

从这里我无法找到这个实例化的位置以及应该将SharedEventManager注入ZfcUsers EventManager的位置。你能指出如何在ZfcUser中激活SharedEventManager吗?

干杯 岸堤

0 个答案:

没有答案