<?php
namespace App\Controller;
use App\Repository\ArticleRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class BlogController extends AbstractController
{
private const PER_PAGE = 6;
/**
* @Route("/actualites", name="blog_index")
*/
public function index(Request $request, ArticleRepository $articleRepository, \App\Repository\ExpertiseRepository $expertiseRepository): Response
{
$page = max(1, (int) $request->query->get('page', 1));
$paginator = $articleRepository->findPaginated($page, self::PER_PAGE);
$totalArticles = count($paginator);
$totalPages = (int) ceil($totalArticles / self::PER_PAGE);
return $this->render('blog/index.html.twig', [
'articles' => $paginator,
'recentArticles' => $articleRepository->findBy([], ['createdAt' => 'DESC'], 3),
'currentPage' => $page,
'totalPages' => $totalPages,
'expertises' => $expertiseRepository->findAll(),
]);
}
/**
* @Route("/actualites/{slug}", name="blog_detail")
*/
public function detail(string $slug, ArticleRepository $articleRepository, \App\Repository\ExpertiseRepository $expertiseRepository): Response
{
$article = $articleRepository->findOneBy(['slug' => $slug]);
if (!$article) {
throw $this->createNotFoundException('Article non trouvé.');
}
return $this->render('blog/detail.html.twig', [
'article' => $article,
'recentArticles' => $articleRepository->findBy([], ['createdAt' => 'DESC'], 3),
'expertises' => $expertiseRepository->findAll(),
]);
}
}