diff --git a/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php b/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php index 018eb26..4bfc942 100644 --- a/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php +++ b/core/lib/Drupal/Core/EventSubscriber/AcceptNegotiation406.php @@ -20,6 +20,12 @@ */ class AcceptNegotiation406 implements EventSubscriberInterface { + /** + * Throws an HTTP 406 error if we get this far, which we normally shouldn't. + * + * @param \Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent $event + * The event to process. + */ function onViewDetect406(GetResponseForControllerResultEvent $event) { $request = $event->getRequest(); $result = $event->getControllerResult(); @@ -30,10 +36,6 @@ function onViewDetect406(GetResponseForControllerResultEvent $event) { // so we provide a 406 response. if (is_array($result) && $request->getRequestFormat() !== 'html') { throw new NotAcceptableHttpException('Not acceptable'); - $result = new JsonResponse([ - 'message' => 'Not Acceptable.', - ], 406); - $event->setResponse($result); } } diff --git a/core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php index 9610e8d..0aefe96 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php @@ -65,4 +65,15 @@ public function on405(GetResponseForExceptionEvent $event) { $event->setResponse($response); } + /** + * Handles a 406 error for JSON. + * + * @param \Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent $event + * The event to process. + */ + public function on406(GetResponseForExceptionEvent $event) { + $response = new JsonResponse(['message' => $event->getException()->getMessage()], Response::HTTP_NOT_ACCEPTABLE); + $event->setResponse($response); + } + }