src/EventListener/RequestListener.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\HttpKernel\Event\RequestEvent;
  4. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  5. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  6. class RequestListener
  7. {
  8.     private SessionInterface $session;
  9.     public function __construct(SessionInterface $session)
  10.     {
  11.         $this->session $session;
  12.     }
  13.     public function onKernelRequest(RequestEvent $event)
  14.     {
  15.         $request $event->getRequest();
  16.         if (!$event->isMasterRequest()) {
  17.             // don't do anything if it's not the master request
  18.             return;
  19.         }
  20.         $currentRoute $request->attributes->get('_route');
  21.         // Skip if this is not a route or it's a route that you don't want to track
  22.         if (null === $currentRoute || $request->isXmlHttpRequest()) {
  23.             return;
  24.         }
  25.         // Get the last route from the session
  26.         $lastRoute $this->session->get('last_route'null);
  27.         // Update the session with the current route
  28.         $this->session->set('last_route'$currentRoute);
  29.         // Optionally store more information, like parameters
  30.         $this->session->set('last_route_params'$request->attributes->get('_route_params'));
  31.     }
  32. }