我希望在调用任何侦听器之前执行重定向。
特别是在hwi的oauthListener开始之前。
我想这样做的原因:
我完全错了吗? 如果我想继续,你知道我应该如何声明我的听众,以便它首先出现并且能够触发立即重定向吗?
答案 0 :(得分:1)
kernel.request
事件是第一个被调度的事件。
查看 KernelEvents 列表。
要让您的特定侦听器在其他kernel.request
侦听器之前执行,您可以将priority
选项(范围:-255到255,最高执行率)添加到侦听器的服务配置中。
示例强>:
services:
kernel.listener.your_listener_name:
class: Acme\DemoBundle\EventListener\AcmeRequestListener
tags:
- name: kernel.event_listener
event: kernel.request
method: onKernelRequest
priority: 255
现在剩下的就是在侦听器的onKernelRequest()
方法中的某些条件下执行重定向。
我相信你会弄清楚如何做到这一点。完整的代码示例将超出此问题的范围。
有关如何编写内核事件侦听器的更多说明,请参阅文档章节:
答案 1 :(得分:0)
确实就是这样。
我尝试了几次,并认为它不起作用,但这可能是缓存清除的问题。
那么,对于那些想知道的人: 我处理我的数据以创建RedirectResponse(Symfony \ Component \ HttpFoundation \ RedirectResponse)
在onKernelRequest中我做
public function onKernelRequest(GetResponseEvent $event){
/**
... do stuff here
*/
$event->setResponse($myResponse);
}