src/Controller/ActualiteOnpcController.php line 77

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ActualiteOnpc as Actualite;
  4. use Knp\Component\Pager\PaginatorInterface;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use WhiteOctober\BreadcrumbsBundle\Model\Breadcrumbs;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. class ActualiteOnpcController extends AbstractController
  11. {
  12.     private const PER_PAGE 15;
  13.     /** @var PaginatorInterface */
  14.     private $paginator;    
  15.     public function __construct(PaginatorInterface $paginator)
  16.     {
  17.         $this->paginator $paginator;
  18.     }
  19.     /**
  20.      * @Route("/articles", name="actualite-onpc-liste")
  21.      */
  22.     public function list(Request $request): Response
  23.     {
  24.         $tag $request->query->get('tag');
  25.         if ($tag) {
  26.             $actualites $this->getDoctrine()
  27.                 ->getRepository(Actualite::class)
  28.                 ->findByTag($tag);
  29.         } else {
  30.             $actualites $this->getDoctrine()
  31.                 ->getRepository(Actualite::class)
  32.                 ->findBy([], ['createdAt' => 'DESC']);
  33.         }
  34.         $actualites $this->paginator->paginate(
  35.             $actualites,
  36.             $request->query->getInt('page'1),
  37.             self::PER_PAGE
  38.         );
  39.         return $this->render('actualite-onpc/list.html.twig', [
  40.             'meta_title' => "Pour suivre toute l'actualité de l'enseignement privée",
  41.             'meta_description' => "Retrouvez toute l'actualité de l'enseignement privée",
  42.             'meta_keywords' => "actualité, enseignement privé, $tag",
  43.             'actualites' => $actualites,
  44.             'tag' => $tag,
  45.         ]);
  46.     }
  47.     /**
  48.      * @Route("/articles/{slug}", name="actualite-onpc-fiche")
  49.      */
  50.     public function fiche(Actualite $actualite): Response
  51.     {
  52.         $firstTag $actualite->getTag(); // ceci est une liste de tags séparés par des virgules
  53.         if (strpos($firstTag',') !== false) {
  54.             $tagsArray explode(','$firstTag);
  55.             $firstTag trim($tagsArray[0]);
  56.         }
  57.         $autresActualites $this->getDoctrine()
  58.             ->getRepository(Actualite::class)
  59.             ->findByTag($firstTag$actualite->getId());
  60.         return $this->render('actualite-onpc/fiche.html.twig', [
  61.             'meta_title' => $actualite->getTitre(),
  62.             'meta_description' => strip_tags($actualite->getDescription()),
  63.             'meta_keywords' => 'annuaire dentaire, annuaire chirurgien dentiste, annuaire prothésiste dentaire, annuaire laboratoire de prothèse, guide matériel fourniture dentaire, formation dentaire, implants dentaires, vidéos dentaires',
  64.             'actualite' => $actualite,
  65.             'autresActualites' => $autresActualites,
  66.         ]);
  67.     }
  68. }