src/Controller/Front/FormationController.php line 36
<?phpnamespace App\Controller\Front;use App\Entity\Actualite;use App\Entity\Contrats;use App\Entity\Diplomes;use App\Entity\Domaines;use App\Entity\Pole;use App\Repository\ContratsRepository;use App\Repository\DiplomesRepository;use App\Repository\DomainesRepository;use App\Repository\FormationRepository;use App\Repository\PoleRepository;use App\Repository\PositionBlocsFormationRepository;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Ttskch\PaginatorBundle\Context;use Ttskch\PaginatorBundle\Doctrine\Counter;use Ttskch\PaginatorBundle\Doctrine\Slicer;use Ttskch\PaginatorBundle\Entity\Criteria;class FormationController extends AbstractController{public function __construct(private EntityManagerInterface $entityManager,private FormationRepository $formationRepository,private PositionBlocsFormationRepository $positionBlocsFormationRepository) {}#[Route('/formations', name: 'app_formation_list')]public function index(Request $request, FormationRepository $formationRepository, Context $context): Response{$poles = $this->entityManager->getRepository(Pole::class)->findAll();$domaines = $this->entityManager->getRepository(Domaines::class)->findAll();$diplomes = $this->entityManager->getRepository(Diplomes::class)->findAll();$contrats = $this->entityManager->getRepository(Contrats::class)->findAll();$pole = $request->get('pole');$domaine = $request->get('domaine');$diplome = $request->get('diplome');$contrat = $request->get('contrat');if (null === $domaine && null === $diplome && null === $contrat && null === $pole) {// $formations = $this->formationRepository->findAll();$qb = $formationRepository->createQueryBuilder('P')->where('P.visible = true');$context->initialize('id', new Slicer($qb), new Counter($qb));} else {$formations = $this->formationRepository->findBySearch($domaine, $diplome, $contrat, $pole);$array = (array) $formations;$context->initialize('id',function (Criteria $criteria) use ($array) {return \array_slice($array, $criteria->limit * ($criteria->page - 1), $criteria->limit);},function () use ($array) {return \count($array);});}// dd($qb);$nbFormation = $context->count;$actualites = $this->entityManager->getRepository(Actualite::class)->findAll();return $this->render('front/formation/index.html.twig', ['poles' => $poles,'domaines' => $domaines,'diplomes' => $diplomes,'contrats' => $contrats,'poleSearch' => $pole,'domaineSearch' => $domaine,'diplomeSearch' => $diplome,'contratSearch' => $contrat,'formations' => $context->slice,'nbFormation' => $nbFormation,'actualites' => $actualites,]);}#[Route('/formation/change-select-ajax', name: 'change-select-ajax')]public function changeSelectAjax(Request $request,PoleRepository $poleRepository,DomainesRepository $domainesRepository,DiplomesRepository $diplomesRepository,ContratsRepository $contratsRepository) {$pole = $request->get('pole');$poles = [];$domaines = [];$diplomes = [];$contrats = [];$poles = $poleRepository->findAll();$poleName = $poleRepository->findBy(['name' => $pole]);$formations = $this->formationRepository->findBy(['poleId' => $poleName]);if (null !== $formations) {foreach ($formations as $formation) {if ($formation->getDomaineId()) {$domaineFormation = $domainesRepository->find($formation->getDomaineId()->getId());if (!\in_array($domaineFormation, $domaines, true)) {$domaines[] = $domaineFormation;}}if ($formation->getDiplomeId()) {$diplomeFormation = $diplomesRepository->find($formation->getDiplomeId()->getId());if (!\in_array($diplomeFormation, $diplomes, true)) {$diplomes[] = $diplomeFormation;}}if ($formation->getContratId()) {$contratFormation = $contratsRepository->find($formation->getContratId()->getId());if (!\in_array($contratFormation, $contrats, true)) {$contrats[] = $contratFormation;}}}}// dd($domaines);// dd($diplomes);/* fonctionne mais avec tomselect cassĂ© */return $this->render('front/formation/include/_recherche.html.twig', ['poles' => $poles,'domaines' => $domaines,'diplomes' => $diplomes,'contrats' => $contrats,'selectedPole' => $poleRepository->findOneBy(['name' => $pole]),'formations' => $formations,]);}#[Route('/formation/{formation<[0-9]\d*>}', name: 'app_formation_detail'),Route('/formation/{slug}', name: 'app_formation_detail_slug')]public function detail(?int $formation,?string $slug): Response {if (!$slug) {$formation = $this->formationRepository->findOneBy(['id' => $formation]);} else {$formation = $this->formationRepository->findOneBy(['slug' => $slug]);}if (null === $formation || (!$this->isGranted('ROLE_ADMIN') && false === $formation->isVisible())) {throw $this->createNotFoundException('Page not found');}if ($this->isGranted('ROLE_ADMIN') && false === $formation->isVisible()) {$this->addFlash('success', 'Cette page est visible car vous ĂȘte administrateur');}$formations = $this->formationRepository->findOther($formation);$tbBlocFormation = $this->positionBlocsFormationRepository->findBy(['formation' => $formation],['position' => 'ASC']);return $this->render('front/formation/detail.html.twig', ['blocFormation' => $tbBlocFormation,'formation' => $formation,'formations' => $formations,]);}}