У меня есть мультимодульное приложение.
И один из его модулей слушает «dispatch.error» с приоритетом 999. И, похоже, ловит ошибки от всех других модулей.
Что мне нужно, это поймать ошибку только в моем конкретном модуле и вести себя соответственно. Это будет работать, если я, например, буду слушать «dispatch.error» с приоритетом 1000 и отфильтровывать ошибки, специфичные для моего модуля (по именам исключений или с использованием фильтрации маршрутов), но нет гарантии, что какой-то другой модуль не будет поставляться с 10000 приоритет для того же события.
Я довольно новичок в ZF2 и не знаю, есть ли правильный способ решить эту проблему.
Похоже, этот вопрос примерно так же: ZF2: как подключить специфичный для модуля приемник для dispatch.error, но ответ совсем не помогает, хотя и принят.
Обновить:
Я узнал, что это можно исправить, изменив DispatchListener.php
(при использовании пользовательского идентификатора в SharedEventManager
).
DispatchListener
получает EventManager
как это:
$events = $application->getEventManager();
Но если контроллер существует, это можно переопределить с помощью:
$events = $controller->getEventManager();
И тогда проблема с обработчиками ошибок для конкретного модуля будет решена.
Кто-нибудь знает решения без исправления основных файлов? И действительно ли это ошибка (этот пользовательский модуль может прослушивать «dispatch», например, но не может слушать «dispatch.error»)
Задача ещё не решена.
Других решений пока нет …