src/Controller/BlogController.php line 18

  1. <?php
  2. namespace App\Controller;
  3. use Backend\Entity\Blog;
  4. use Backend\Entity\BlogCategory;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Knp\Component\Pager\PaginatorInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. #[Route('/blog')]
  12. class BlogController extends AbstractController
  13. {
  14.     #[Route('/', name: 'web_blog')]
  15.     public function posts(Request $request, EntityManagerInterface $entityManager, PaginatorInterface $paginator): Response
  16.     {
  17.         $repository = $entityManager->getRepository(Blog::class);
  18.         $query = $repository->createQueryBuilder('b')
  19.             ->orderBy('b.createDate', 'DESC')
  20.             ->getQuery();
  21.         $posts = $paginator->paginate(
  22.             $query,
  23.             $request->query->getInt('page', 1),
  24.             9
  25.         );
  26.         $categories = $entityManager->getRepository(BlogCategory::class)->findBy(
  27.             ['state' => true]
  28.         );
  29.         return $this->render('web/blog/index.html.twig', [
  30.             'pagination' => $posts,
  31.             'categories' => $categories,
  32.         ]);
  33.     }
  34.     #[Route('/{url}', name: 'web_blog_detail')]
  35.     public function post(EntityManagerInterface $entityManager, string $url): Response
  36.     {
  37.         $post = $entityManager->getRepository(Blog::class)->findOneBy([
  38.             'url' => $url
  39.         ]);
  40.         return $this->render('web/blog/post.html.twig', [
  41.             'post' => $post,
  42.         ]);
  43.     }
  44. }