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 $requestEntityManagerInterface $entityManagerPaginatorInterface $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 $entityManagerstring $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. }