<?php
namespace App\Controller;
use App\Entity\Category;
use App\Repository\ArticleRepository;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/category")
*/
class CategoryController extends AbstractController
{
/**
* @Route("/{slug}", name="category_show")
*/
public function show(
Category $category,
Request $request,
ArticleRepository $articleRepo,
PaginatorInterface $paginator
): Response {
if (!$category->getIsActive()) {
throw $this->createNotFoundException('Catégorie non disponible');
}
$query = $articleRepo->createQueryBuilder('a')
->where('a.category = :category')
->andWhere('a.status = :status')
->setParameter('category', $category)
->setParameter('status', \App\Entity\Article::STATUS_PUBLISHED)
->orderBy('a.publishedAt', 'DESC')
->getQuery();
$articles = $paginator->paginate(
$query,
$request->query->getInt('page', 1),
12
);
return $this->render('category/show.html.twig', [
'category' => $category,
'articles' => $articles,
]);
}
}