Sky*_*blo 9 event-handling symfony
我为"name:kernel.event_listener,event:kernel.request"定义了2个事件监听器,但是我可以做我想做的事情,我无法改变调用这个监听器的顺序.我尝试使用"优先"号码,但没有任何帮助.
这个事件总是在调用@first:
MyBundle.Foo.Listener.RequestListener:
class: %MyBundle.Foo.Listener.request.class%
arguments: [ @session, @liip_theme.active_theme, @Need.some.infos.service ]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onRequest, priority: 100 }
Run Code Online (Sandbox Code Playgroud)
并且此事件永远不会调用,因为第一个事件使用的服务依赖于此事件的信息,因此在触发此事件之前它会崩溃:
MyBundle.Bar.Listener.RequestListener:
class: %MyBundle.Bar.Listener.request.class%
arguments: [ @session ]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onRequest, priority: 200 }
Run Code Online (Sandbox Code Playgroud)
我也改变了"优先级",但没有改变:(
也许有人给我一个提示,我可以确保听众"MyBundle.Bar.Listener.RequestListener"会在另一个事件之前调用吗?
问题是事件监听器类将在任何事件触发之前在Symfony启动时初始化.
我不得不将我的DI更改为:
MyBundle.Foo.Listener.RequestListener:
class: %MyBundle.Foo.Listener.request.class%
arguments: [ @session, @liip_theme.active_theme, @service_container ]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onRequest, priority: 0 }
Run Code Online (Sandbox Code Playgroud)
我使用了这个"@service_container"服务,并在事件内调用目标服务"@ Need.some.infos.service",一切正常.
| 归档时间: |
|
| 查看次数: |
9117 次 |
| 最近记录: |