src/EventSubscriber/CurrentRequestSubscriber.php line 41

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\EventSubscriber;
  3. use App\Entity\Site;
  4. use App\Service\SiteManager;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class CurrentRequestSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * The site manager
  13.      *
  14.      * @var SiteManager
  15.      */
  16.     private $siteManager;
  17.     /**
  18.      * The entity manager
  19.      *
  20.      * @var EntityManagerInterface
  21.      */
  22.     private $entityManager;
  23.     public function __construct(SiteManager $siteManagerEntityManagerInterface $entityManager)
  24.     {
  25.         $this->siteManager $siteManager;
  26.         $this->entityManager $entityManager;
  27.     }
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             KernelEvents::REQUEST => ['setCurrentSite']
  32.         ];
  33.     }
  34.     public function setCurrentSite(RequestEvent $event)
  35.     {
  36.         $request $event->getRequest();
  37.         $currentHost $request->getSchemeAndHttpHost();
  38.         $site $this->entityManager
  39.             ->getRepository(Site::class)
  40.             ->findOneBy(['url' => $currentHost])
  41.         ;
  42.         $this->siteManager->setCurrent($site);
  43.     }
  44. }