<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpFoundation\RequestStack;
class RenderedRouteSubscriber implements EventSubscriberInterface
{
public const LAST_RENDERED_ROUTE = 'last_rendered_route';
/** @var SessionInterface */
protected $requestStack;
protected $session;
/**
* KernelTerminateSubscriber constructor.
*/
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
$this->session = $this->requestStack->getSession();
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::RESPONSE => 'storeRenderedRoute',
];
}
public function storeRenderedRoute(ResponseEvent $event)
{
$request = $event->getRequest();
if ($request->hasSession() && $request->isMethodSafe() && !$request->isXmlHttpRequest()) {
$this->session->set(self::LAST_RENDERED_ROUTE, $request->get('_route'));
}
}
}