vendor/cofondateur/socle-technique/src/EventSubscriber/TwigEventSubscriber.php line 41

Open in your IDE?
  1. <?php
  2. namespace Cofondateur\SocleTechniqueBundle\EventSubscriber;
  3. use App\Entity\SEOPage;
  4. use App\Entity\SiteSettings;
  5. use Cofondateur\SocleTechniqueBundle\Service\BreadcrumbService;
  6. use Cofondateur\SocleTechniqueBundle\Traits\UpdatableInterface;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeCrudActionEvent;
  9. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  10. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\HttpKernel\Event\ControllerArgumentsEvent;
  13. use Symfony\Component\HttpKernel\Event\RequestEvent;
  14. use Symfony\Component\Security\Core\Security;
  15. use Twig\Environment;
  16. class TwigEventSubscriber implements EventSubscriberInterface
  17. {
  18.     /** @var EntityManagerInterface */
  19.     private $em;
  20.     /** @var Environment */
  21.     private $twig;
  22.     public function __construct(EntityManagerInterface $emEnvironment $twigBreadcrumbService $breadcrumbService)
  23.     {
  24.         $this->em $em;
  25.         $this->twig $twig;
  26.         $this->breadcrumbService $breadcrumbService;
  27.     }
  28.     public static function getSubscribedEvents()
  29.     {
  30.         return array(
  31.             RequestEvent::class => ["onRequest"]
  32.         );
  33.     }
  34.     public function onRequest(RequestEvent $event)
  35.     {
  36.         // Add current SEOPage
  37.         $repo $this->em->getRepository(SEOPage::class);
  38.         $route $event->getRequest()->get('_route');
  39.         $seoPage $repo->findOneBy(array('route' => $route));
  40.         $this->twig->addGlobal('SEOPage'$seoPage);
  41.         // Add site settings
  42.         $repo $this->em->getRepository(SiteSettings::class);
  43.         $settings $repo->findAll();
  44.         if (count($settings) > 0) {
  45.             $this->twig->addGlobal('siteSettings'$settings[0]);
  46.         } else {
  47.             if ($route && !str_starts_with($route'admin') && !str_starts_with($route'login')) {
  48.                 throw new \Exception('Les paramètres du site n\'ont pas été initialisés. Veuillez les initialiser dans le menu admin ['.$route.']');
  49.             }
  50.         }
  51.         // Services
  52.         $this->breadcrumbService->setCurrentRequest($event->getRequest());
  53.     }
  54. }