我有一个控制器的方法注释如下:
/**
* @Route("/document/remove/", name="document_remove", requirements={"id"="^\d+$"}, defaults={"_format"="json"})
* @Method({"DELETE"})
*/
public function removeDocumentAction(Request $request)
如果我尝试打开" / document / remove /"我的浏览器中的网址(GET请求),我看到MethodNotAllowedException
。这是对的,但我希望得到一个NotFoundException
。我怎么能这样做?
答案 0 :(得分:1)
您需要编写一个事件监听器。您将订阅内核异常。检查异常是否为MethodNotAllowedException,然后将其转换为NotFoundException。
//Your Event Listener
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
class ExceptionListener
{
public function onKernelException(GetResponseForExceptionEvent $event)
{
$exception = $event->getException();
if (!($exception instanceof MethodNotAllowedException)) {
return;
}
$response = new Response($exception->getMessage(),404);
$event->setResponse($response);
}
}
查看有关如何创建和注册事件监听器的Symfony Documentation。