<?php
namespace App\Controller\Front;
use App\Entity\Article;
use App\Entity\BlogCategory;
use App\Repository\ArticleRepository;
use App\Repository\BlogCategoryRepository;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/blog")
*/
class BlogController extends AbstractController
{
/**
* @Route("/articles/{page}", defaults={"page"=1}, requirements={"page"="\d+"}, name="front_blog_list")
*/
public function list(Request $request,int $page, ArticleRepository $articleRepository, PaginatorInterface $paginator, BlogCategoryRepository $blogCategoryRepository)
{
$articles = $articleRepository->findBy([], ['publishedAt' => 'DESC']);
$lastArticles = $articleRepository->findBy([], ['publishedAt' => 'DESC'], 5);
$pagination = $paginator->paginate(
$articles,
$page, /*page number*/
5 /*limit per page*/
);
return $this->render('front/blog/list.html.twig', [
'articles' => $pagination,
'categories' => $blogCategoryRepository->findBy([], ['name' => 'ASC']),
'lastArticles' => $lastArticles
]);
}
/**
* @Route("/articles/categorie/{categorySlug}/{page}", defaults={"page"=1}, requirements={"page"="\d+"}, name="front_blog_category_list")
*/
public function categoryList(
BlogCategory $blogCategory,
int $page,
ArticleRepository $articleRepository,
PaginatorInterface $paginator,
BlogCategoryRepository $blogCategoryRepository)
{
$articles = $articleRepository->findBy(['blogCategory' => $blogCategory], ['publishedAt' => 'DESC']);
$lastArticles = $articleRepository->findBy([], ['publishedAt' => 'DESC'], 5);
$pagination = $paginator->paginate(
$articles,
$page, /*page number*/
5 /*limit per page*/
);
return $this->render('front/blog/list.html.twig', [
'articles' => $pagination,
'categorySelected' => $blogCategory,
'categories' => $blogCategoryRepository->findBy([], ['name' => 'ASC']),
'lastArticles' => $lastArticles
]);
}
/**
* @Route("/{categorySlug}/{slug}", name="front_blog_single")
*/
public function single(BlogCategory $blogCategory, Article $article, BlogCategoryRepository $blogCategoryRepository, ArticleRepository $articleRepository)
{
$lastArticles = $articleRepository->findBy([], ['publishedAt' => 'DESC'], 5);
return $this->render('front/blog/single.html.twig', [
'article' => $article,
'categories' => $blogCategoryRepository->findBy([], ['name' => 'ASC']),
'lastArticles' => $lastArticles
]);
}
}