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