src/Controller/HeaderController.php line 25

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\Response;
  7. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Contracts\Cache\CacheInterface;
  10. use Symfony\Contracts\Cache\ItemInterface;
  11. class HeaderController extends AbstractController {
  12.     private $entityManager;
  13.     public function __construct(EntityManagerInterface $entityManager) {
  14.         $this->entityManager = $entityManager;
  15.     }
  16.     /**
  17.      * @Route("/articles/{slug}", name="app_header_articles")
  18.      */
  19.     public function index($slug, HeaderRepository $headerRepo, CacheInterface $cache): Response {
  20.         $annonce = $cache->get('app_header_articles_' . $slug, function (ItemInterface $item) use ($headerRepo, $slug) {
  21.             $item->expiresAfter(20);
  22.             return $headerRepo->findOneBy(['slug' => $slug]);
  23.         });
  24.         if (!$annonce) {
  25.             throw new NotFoundHttpException('Pas d\'article trouvĂ©');
  26.         }
  27.         return $this->render('header/index.html.twig', [
  28.                      'annonces' => $annonce,
  29.         ]);
  30.     }
  31. }