<?php
namespace App\Controller;
use App\Entity\Category;
use App\Entity\Article;
use App\Repository\CategoryRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class CategoryController extends AbstractController
{
// Affichage des catégories de la partie publique
/**
* @Route("/category", name="category")
*/
public function index(CategoryRepository $repo, Request $request, PaginatorInterface $paginator)
{
$donnees = $repo->findAll();
$categories = $paginator->paginate(
$donnees, // on passe les données
$request->query->getInt('page', 1), // N° de la page en cours, 1 par défaut
4 // nombre d'éléments par page
);
return $this->render('category/index.html.twig', [
'controller_name' => 'CategoryController',
'categories' => $categories,
]);
}
// Vue qui permet d'afficher une catégorie
/**
* @Route("/category/{slug}", name="category_show")
*/
public function show(Category $category = null, Request $request, EntityManagerInterface $manager) {
$articles = $manager->getRepository(Article::class)->findByCategory($category, ['position' => 'ASC']);
return $this->render('category/show.html.twig', [
'articles' => $articles,
'category' => $category
]);
}
}