当symfony抛出异常时,我需要从EventListener重定向到自定义url
in my service.yml
app.exception_listener:
class: AppBundle'EventListener'ExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException }
在我的PHP类
<?php
namespace AppBundle'EventListener;
use Symfony'Component'HttpKernel'Event'GetResponseForExceptionEvent;
use Symfony'Component'HttpFoundation'Response;
use Symfony'Component'HttpKernel'Exception'HttpExceptionInterface;
use Symfony'Component'DependencyInjection'Container;
use Symfony'Component'HttpFoundation'RedirectResponse;
class ExceptionListener {
public function onKernelException(GetResponseForExceptionEvent $event) {
// You get the exception object from the received event
$exception = $event->getException();
if ($exception instanceof NotFoundHttpException) {
//i need this function
return $this->redirect('https://www.google.co.ve/?gws_rd=ssl', 404);
}
}
}
而不是:
返回$ this ->重定向(https://www.google.co.ve/?gws_rd=ssl, 404年),
:
事件-> setResponse(新RedirectResponse (' https://www.google.co.ve/?gws_rd=ssl '));
还要注意,发送带有404响应的Location头是没有意义的,您应该使用3xx范围内的响应。当试图用另一个状态码重定向时,Symfony实际上会(正确地)抛出异常。