我想在Symfony3上创建一个自定义异常,返回一个JSON响应,以便能够在JavaScript中处理它。
谁知道这是可能的,怎么做?
创建一个新的异常处理程序类,如下所示:
namespace AppBundle'Subscriber;
use Symfony'Component'EventDispatcher'EventSubscriberInterface;
use Symfony'Component'HttpFoundation'JsonResponse;
use Symfony'Component'HttpKernel'Event'GetResponseForExceptionEvent;
class ExceptionSubscriber implements EventSubscriberInterface
{
/* ... */
public static function getSubscribedEvents()
{
return [ KernelEvents::EXCEPTION => 'onKernelException' ];
}
public function onKernelException(GetResponseForExceptionEvent $event)
{
$customResponse = new JsonResponse(['error' => 'My custom error message']);
$event->setResponse($customResponse);
}
}
别忘了在app/config/services.yml:
中注册新的服务app.exception_subscriber:
class: AppBundle'Subscriber'ExceptionSubscriber
tags:
- { name: kernel.event_subscriber }