将EventDispatcher投入服务在生产环境中不起作用-symfony 3.4

问题描述 投票:0回答:1

假设我有一个侦听器作为这样的服务

class MyListener
{
     /**
     * @var Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher 
     */
     private $dispatcher;

     function __construct(ContainerAwareEventDispatcher $dispatcher)
     {
        $this->dispatcher = $dispatcher;
     }

     public function onKernelRequest(GetResponseEvent $event)
     {
        //in my logic here I use $this->dispatcher->dispatch(my-own-event)
     }
}

service.yml

ap.my_listener:
        class: SBC\CenterPermissionBundle\EventListener\RouteListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
        arguments: ["@debug.event_dispatcher.inner"]

在开发环境中工作正常,但是在清除缓存后切换到生产环境时,出现此异常:The service "ap.my_listener" has a dependency on a non-existent service "debug.event_dispatcher.inner"

当我按时间按下时,我只是注入了所有容器,所以发生了什么事情,有另一种方法可以注入Event Dispatcher,而无需从容器中检索它。>

假设我有一个侦听器作为此类服务,例如MyListener {/ ** * @var Symfony \ Component \ EventDispatcher \ ContainerAwareEventDispatcher * / private $ dispatcher; ...

symfony dependency-injection symfony-eventdispatcher
1个回答
0
投票

您应该只注入事件分配器并使用类似的接口

© www.soinside.com 2019 - 2024. All rights reserved.