src/EventSubscriber/EntityListSubscriber.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Repository\Configuration\CompanyEntityRepository;
  4. use App\Repository\Configuration\SiegeRepository;
  5. use App\Service\SelectedEntityService;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Twig\Environment;
  11. class EntityListSubscriber implements EventSubscriberInterface
  12. {
  13.     private $twig;
  14.     private $companyEntityRepository;
  15.     private $selectedEntityService;
  16.     private $siegeRepository;
  17.     private $requestStack;
  18.     public function __construct(
  19.         Environment $twig,
  20.         CompanyEntityRepository $companyEntityRepository,
  21.         SelectedEntityService $selectedEntityService,
  22.         SiegeRepository $siegeRepository,
  23.         RequestStack $requestStack
  24.     ) {
  25.         $this->twig $twig;
  26.         $this->companyEntityRepository $companyEntityRepository;
  27.         $this->selectedEntityService $selectedEntityService;
  28.         $this->siegeRepository $siegeRepository;
  29.         $this->requestStack $requestStack;
  30.     }
  31.     public function onKernelController(ControllerEvent $event)
  32.     {
  33.         // Ne pas exécuter pour les sous-requêtes
  34.         if (!$event->isMainRequest()) {
  35.             return;
  36.         }
  37.         // Ajouter la liste des entités aux variables globales de Twig
  38.         $this->twig->addGlobal('selectedEntity'$this->selectedEntityService->getSelectedEntity());
  39.         // Charger le siege dont le nom est contenu dans le nom de domaine
  40.         $request $this->requestStack->getCurrentRequest();
  41.         if ($request) {
  42.             $host $request->getHost();
  43.             $siege $this->siegeRepository->findOneByHostContainingNom($host);
  44.             $this->twig->addGlobal('currentSiege'$siege);
  45.         }
  46.     }
  47.     public static function getSubscribedEvents()
  48.     {
  49.         return [
  50.             KernelEvents::CONTROLLER => 'onKernelController',
  51.         ];
  52.     }