<?php
namespace App\Controller;
use App\Repository\HeaderRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Cache\ItemInterface;
use Symfony\Contracts\Cache\CacheInterface;
class HeaderController extends AbstractController {
private $entityManager;
public function __construct(EntityManagerInterface $entityManager) {
$this->entityManager = $entityManager;
}
/**
* @Route("/{_locale<%app.supported_locales%>}/news/{slug}", name="app_header_show")
*/
public function show($slug, HeaderRepository $headerRepository, CacheInterface $cache): Response {
$header = $cache->get('header_article_' . $slug, function (ItemInterface $item) use ($headerRepository, $slug) {
$item->expiresAfter(20);
return $headerRepository->findOneBy(['slug' => $slug]);
});
if (!$header) {
throw new NotFoundHttpException('Pas d\'article trouvé');
}
return $this->render('header/show.html.twig', [
'headers' => $header,
]);
}
}