<?php
namespace App\Controller\Front;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Knp\Component\Pager\PaginatorInterface;
use App\Repository\Blog\PostRepository;
use App\Repository\Blog\CategoryRepository;
use App\Entity\Blog\Post;
use App\Entity\Blog\Category;
class BlogController extends AbstractController
{
public function index(Request $request, PostRepository $repository, CategoryRepository $categoryRepository, PaginatorInterface $paginator, Category $category = null): Response
{
$keyword = $request->query->get('keyword');
$query = $repository->findPostsQuery($category, $keyword);
$posts = $paginator->paginate($query, $request->query->getInt('page', 1), 3);
$categories = $categoryRepository->findAll();
$recentPost = $repository->findRecent();
$count = 0;
foreach ($categories as $category) $count += count($category->getPosts());
return $this->render('front/blog/index.html.twig', [
'posts' => $posts,
'count' => $count,
'keyword' => $keyword,
'categories' => $categories,
'recent_post' => $recentPost,
]);
}
public function show(Post $post, CategoryRepository $categoryRepository, PostRepository $repository): Response
{
$categories = $categoryRepository->findAll();
$recentPost = $repository->findRecent();
$count = 0;
foreach ($categories as $category) $count += count($category->getPosts());
return $this->render('front/blog/show.html.twig', [
'post' => $post,
'count' => $count,
'categories' => $categories,
'recent_post' => $recentPost,
]);
}
}