我正在尝试使用找到的 kernel.request 事件 here
我的示例的简化版本是重定向用户,除非他们已经在重定向的页面上。我看到的问题是我得到的页面没有任何样式 - 似乎我的样式和 js 也可能被重定向。
这是代码
服务.yml
services:
app.RequestListener:
class: App\EventListener\RequestListener
arguments: [ @security.context ]
tags:
- { name: kernel.event_listener, event: kernel.request, method: redirectUser }
请求监听器.php
class requestListener
{
public function redirectUser()
{
if($event->getRequest()->getPathInfo() != '/') {
//app_frontend_home_index goes to '/'
$event->setResponse(new RedirectResponse($this->router->generate('app_frontend_home_index')));
}
}
}
我也在设置 ?test=dont_redirect 的地方尝试过,一旦设置它就不应该重定向
public function redirectUser()
{
if(is_null($event->getRequest()->get('test'))) {
//app_frontend_home_index goes to '/'
$event->setResponse(new RedirectResponse($this->router->generate('app_frontend_home_index', array('test' => 'dont_redirect'))));
}
}
阅读我提供的链接中的部分后 - 听起来这是正确的事件。有没有办法让它发挥作用?
最佳答案
在进行重定向之前尝试检查以下条件:
if ($event->getRequest()->attributes->get('_route')[0] !== '_') {
}
关于php - kernel.request 事件 setResponse 到 RedirectResponse 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18841120/