src/Controller/HeaderController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\HeaderRepository;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Contracts\Cache\ItemInterface;
  11. use Symfony\Contracts\Cache\CacheInterface;
  12. class HeaderController extends AbstractController {
  13.     private $entityManager;
  14.     public function __construct(EntityManagerInterface $entityManager) {
  15.         $this->entityManager = $entityManager;
  16.     }
  17.     /**
  18.      * @Route("/{_locale<%app.supported_locales%>}/news/{slug}", name="app_header_show")
  19.      */
  20.     public function show($slug, HeaderRepository $headerRepository, CacheInterface $cache): Response {
  21.         $header = $cache->get('header_article_' . $slug, function (ItemInterface $item) use ($headerRepository, $slug) {
  22.             $item->expiresAfter(20);
  23.             return $headerRepository->findOneBy(['slug' => $slug]);
  24.         });
  25.         if (!$header) {
  26.             throw new NotFoundHttpException('Pas d\'article trouvĂ©');
  27.         }
  28.         return $this->render('header/show.html.twig', [
  29.                     'headers' => $header,
  30.         ]);
  31.     }
  32. }