我有一个多模块化的应用程序。
其中一个模块以999优先级侦听“dispatch.error”。它似乎可以捕获所有其他模块的错误。
我需要的是仅在我的特定模块中捕获错误 并且表现得恰当。例如,如果我将以1000优先级监听“dispatch.error”并过滤掉我的模块特有的错误(通过异常名称或使用路由过滤),它将起作用,但是不能保证某些其他模块不会带有10000同一事件的优先权。
我对ZF2很陌生,不知道是否有正确的解决方法。
看起来这个问题大致相同:ZF2: How to attach module specific listener for dispatch.error,但是虽然被接受,但回复根本没有帮助。
更新
我发现,可以通过更改DispatchListener.php
(在SharedEventManager
中使用自定义ID时)修复此问题。
DispatchListener
得到EventManager
,如下所示:
$events = $application->getEventManager();
但如果控制器存在,则可以用以下方式覆盖:
$events = $controller->getEventManager();
然后解决模块特定错误处理程序的问题。
有没有人知道没有修复核心文件的解决方案?它实际上是一个错误(例如,自定义模块可以监听“调度”,但不能听“dispatch.error”)