<?php
namespace App\EventSubscriber;
use App\Repository\CategoriesRepository;
use App\Repository\MarquesRepository;
use App\Repository\ModelesRepository;
use App\Repository\PubImageRepository;
use App\Repository\QuartiersRepository;
use App\Repository\VillesRepository;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Twig\Environment;
class TwigEventSubscriber implements EventSubscriberInterface
{
private Environment $twig ;
private CategoriesRepository $categoriesRepository;
private VillesRepository $villesRepository;
private QuartiersRepository $quartiersRepository;
private PubImageRepository $pubImageRepository;
private MarquesRepository $marquesRepository;
private ModelesRepository $modelesRepository;
/**
* @param Environment $twig
* @param CategoriesRepository $categoriesRepository
* @param VillesRepository $villesRepository
* @param QuartiersRepository $quartiersRepository
* @param PubImageRepository $pubImageRepository
* @param MarquesRepository $marquesRepository
* @param ModelesRepository $modelesRepository
*/
public function __construct(Environment $twig, CategoriesRepository $categoriesRepository, VillesRepository $villesRepository,
QuartiersRepository $quartiersRepository, PubImageRepository $pubImageRepository, MarquesRepository $marquesRepository, ModelesRepository $modelesRepository )
{
$this->twig = $twig;
$this->categoriesRepository = $categoriesRepository;
$this->villesRepository = $villesRepository;
$this->quartiersRepository = $quartiersRepository;
$this->pubImageRepository = $pubImageRepository;
$this->marquesRepository =$marquesRepository ;
$this->modelesRepository= $modelesRepository;
}
public function onKernelController(ControllerEvent $event): void
{
$this->twig->addGlobal('categories',$this->categoriesRepository->findBy([],["libelle"=>"ASC"]));
$this->twig->addGlobal('villes', $this->villesRepository->findAll());
$this->twig->addGlobal('quartiers', $this->quartiersRepository->findAll());
$this->twig->addGlobal("pubImages", $this->pubImageRepository->retrieveZoneAndImage());
$this->twig->addGlobal("marques", $this->marquesRepository->findAll());
$this->twig->addGlobal("modeles", $this->modelesRepository->findAll());
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::CONTROLLER => 'onKernelController',
];
}
}