diff --git a/core/core.services.yml b/core/core.services.yml index ee319c3..6094635 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -855,6 +855,10 @@ services: arguments: ['@class_resolver', '@current_route_match', '%main_content_renderers%'] tags: - { name: event_subscriber } + accept_negotiation_406: + class: Drupal\Core\EventSubscriber\AcceptNegotiation406 + tags: + - { name: event_subscriber, priority: -10 } main_content_renderer.html: class: Drupal\Core\Render\MainContent\HtmlRenderer arguments: ['@title_resolver', '@plugin.manager.display_variant', '@event_dispatcher', '@element_info', '@module_handler', '@renderer', '@render_cache', '@cache_contexts_manager'] diff --git a/core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ExceptionJsonSubscriber.php index 9610e8d..70e4208 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(array('message' => $event->getException()->getMessage()), Response::HTTP_NOT_ACCEPTABLE); + $event->setResponse($response); + } + }