<?php namespace App\Listener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; class Flash implements EventSubscriberInterface { protected $session; public function __construct(SessionInterface $session) { $this->session = $session; } public function onKernelResponse(FilterResponseEvent $event) { $response = $event->getResponse(); // modify JSON response object if ($response instanceof JsonResponse) { // Embed flash messages to the JSON response if there are any $flashMessages = $this->session->getFlashBag()->all(); if (!empty($flashMessages)) { // Decode the JSON response before encoding it again with additional data $data = json_decode($response->getContent(), true); $data['messages'] = $flashMessages; $response->setData($data); } } } public static function getSubscribedEvents() { return [ KernelEvents::RESPONSE => 'onKernelResponse', ]; } }