<?php
/**
* @author <akartis-dev>
*/
namespace App\Controller\App;
use App\Controller\AppAbstractController;
use App\Entity\Blog\BlogCategories;
use App\ObjectManager\EntityObjectManager;
use App\Repository\Blog\BlogCategoriesRepository;
use App\Repository\Blog\BlogRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
#[Route('/{_locale}/blog')]
class BlogController extends AppAbstractController
{
public const BLOG_PAGE_LIMIT = 5;
public function __construct(
private EntityObjectManager $em
)
{
}
#[Route('/', name: "blog_index")]
public function index(Request $request, BlogRepository $blogRepository, BlogCategoriesRepository $blogCategoriesRepository)
{
$query = $blogRepository->findActive();
$blogs = $this->em->paginate($query, $request, self::BLOG_PAGE_LIMIT);
$categories = $blogCategoriesRepository->findActive();
return $this->render('pages/blog_index.html.twig', [
'blogs' => $blogs,
'categories' => $categories
]);
}
#[Route('/category/{id}', name: "blog_category")]
public function category(?BlogCategories $categories, Request $request, BlogRepository $blogRepository, BlogCategoriesRepository $blogCategoriesRepository)
{
if (!$categories) {
return $this->redirectToRoute("blog_index");
}
$query = $blogRepository->findByCategory($categories);
$blogs = $this->em->paginate($query, $request, self::BLOG_PAGE_LIMIT);
$categories = $blogCategoriesRepository->findActive();
return $this->render('pages/blog_index.html.twig', [
'blogs' => $blogs,
'categories' => $categories
]);
}
#[Route('/{slug}', name: "blog_view")]
public function view(string $slug, BlogRepository $blogRepository, BlogCategoriesRepository $blogCategoriesRepository)
{
$blog = $blogRepository->findBySlug($slug);
$categories = $blogCategoriesRepository->findActive();
return $this->render('pages/blog_view.html.twig', [
'blog' => $blog,
'categories' => $categories
]);
}
}