【发布时间】:2015-07-14 16:31:13
【问题描述】:
我一直在为这个问题摸不着头脑。我正在查看 Symfony 的异常处理并检查配置了哪些侦听器。我看到 FOS Rest Bundle 提供了一个 AccessDeniedListener,在他们的服务定义中定义为
<service id="fos_rest.access_denied_listener" class="%fos_rest.access_denied_listener.class%">
<tag name="kernel.event_subscriber" />
<tag name="monolog.logger" channel="request" />
<argument>%fos_rest.access_denied_listener.formats%</argument>
<argument>%fos_rest.access_denied_listener.unauthorized_challenge%</argument>
<argument>%twig.exception_listener.controller%</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>
但是,即使在 getSubscribedEvents 中添加 die() 也没有任何效果,所以我猜测它由于某种原因被忽略了。我以为任何带有kernel.event_subscriber标签的类的getSubscribedEvents方法都会被调用,这是错的吗?
我也尝试将服务定义放入我自己的包中,但没有奏效。
只看 symfony Symfony\Component\HttpKernel\EventListener\ExceptionListener 我可以看到他们正在添加 kernel.event_subscriber 标签,这很有效,订阅者按预期调用。实际上,在 symfony EventDispatcher 中的 addSubscriber 方法上设置断点表明根本没有添加订阅者。我对这一切感到非常困惑,并且可能误解了订阅者/听众的工作方式。
【问题讨论】:
标签: symfony