我正在尝试修改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吗?
干杯 岸堤