<?php
namespace App\Controller\Site;
use App\Controller\BaseController;
use App\Entity\CategorieFormation;
use App\Entity\ProgrammeFormation;
use App\Repository\ProgrammeFormationRepository;
use Cocur\Slugify\Slugify;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class FormationsController extends BaseController
{
private $em,$paginator;
public function __construct(EntityManagerInterface $em, PaginatorInterface $paginator)
{
$this->em=$em;
$this->paginator = $paginator;
}
#[Route(path: '/formations/{slug?}', name: 'site_formation')]
public function index(Request $request,ProgrammeFormationRepository $repository,CategorieFormation $categorieFormation=null)
{
//$this->makeSlug();
//dd();
//#2
$catId=($categorieFormation)? $categorieFormation->getId():null;
$q=$request->query->get('q');
$categories=$this->em->getRepository(CategorieFormation::class)->findBy([],['titre'=>'ASC']);
$all=$this->em->getRepository(ProgrammeFormation::class)->findValid($q,$catId);
//$all=$repository->findAll();
$paginedData=$this->paginator->paginate($all,$request->query->getInt('page', 1),18);
return $this->render('site/formations/index.html.twig', [
'programmes'=>$paginedData,
'q'=>$q,
'catId'=>$catId,
'categories'=>$categories,
]);
}
#[Route(path: '/formation/{id}/', name: 'site_formation_show')]
public function show(ProgrammeFormation $programmeFormation,ProgrammeFormationRepository $repository)
{
$related=$repository->findRelated($programmeFormation,3);
return $this->render('site/formations/show.html.twig', [
'programme'=>$programmeFormation,
'related'=>$related,
]);
}
private function makeSlug(){
$typenewsRepository = $this->em->getRepository(CategorieFormation::class);
$slugify=new Slugify();
$items=$typenewsRepository->findAll();
foreach ($items as $item) {
$item->setSlug($slugify->slugify($item->getTitre()));
}
$this->em->flush();
}
}