src/Controller/BlogController.php line 22

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Blog;
  4. use App\Form\BlogType;
  5. use App\Repository\BlogRepository;
  6. use Knp\Component\Pager\PaginatorInterface;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. #[Route('/blog')]
  13. class BlogController extends AbstractController
  14. {
  15.     public function top(BlogRepository $blogRepository): Response
  16.     {
  17.         return $this->render('blog/_top.html.twig', [
  18.             'blogs' => $blogRepository->findTop(),
  19.         ]);
  20.     }
  21.     #[Security('is_granted("ROLE_WRITER")')]
  22.     #[Route('/'name'app_blog_index'methods: ['GET'])]
  23.     public function index(Request $requestPaginatorInterface $paginatorBlogRepository $blogRepository): Response
  24.     {
  25.         $parameters = [];
  26.         if($request->query->all()) {
  27.             $parameters $request->query->all();
  28.         }
  29.         $pagination $paginator->paginate(
  30.             $blogRepository->findQuery($parameters), /* query NOT result */
  31.             $request->query->getInt('page'1), /*page number*/
  32.             20 /*limit per page*/
  33.         );
  34.         return $this->render('blog/index.html.twig', [
  35.             'blogs' => $pagination,
  36.         ]);
  37.     }
  38.     #[Security('is_granted("ROLE_WRITER")')]
  39.     #[Route('/new'name'app_blog_new'methods: ['GET''POST'])]
  40.     public function new(Request $requestBlogRepository $blogRepository): Response
  41.     {
  42.         $blog = new Blog();
  43.         $blog->setCreateAt(new \DateTime());
  44.         $form $this->createForm(BlogType::class, $blog);
  45.         $form->handleRequest($request);
  46.         if ($form->isSubmitted() && $form->isValid()) {
  47.             $blogRepository->save($blogtrue);
  48.             return $this->redirectToRoute('app_blog_show', [ 'id'=> $blog->getId() ], Response::HTTP_SEE_OTHER);
  49.         }
  50.         return $this->renderForm('blog/new.html.twig'compact('blog''form'));
  51.     }
  52.     #[Security('is_granted("ROLE_WRITER")')]
  53.     #[Route('/{id}'name'app_blog_show'methods: ['GET'])]
  54.     public function show(Blog $blog): Response
  55.     {
  56.         return $this->render('blog/show.html.twig'compact('blog'));
  57.     }
  58.     #[Security('is_granted("ROLE_WRITER")')]
  59.     #[Route('/{id}/edit'name'app_blog_edit'methods: ['GET''POST'])]
  60.     public function edit(Request $requestBlog $blogBlogRepository $blogRepository): Response
  61.     {
  62.         $form $this->createForm(BlogType::class, $blog);
  63.         $form->handleRequest($request);
  64.         if ($form->isSubmitted() && $form->isValid()) {
  65.             $blogRepository->save($blogtrue);
  66.             return $this->redirectToRoute('app_blog_show', [ 'id'=> $blog->getId() ], Response::HTTP_SEE_OTHER);
  67.         }
  68.         return $this->renderForm('blog/edit.html.twig'compact('blog''form'));
  69.     }
  70.     #[Security('is_granted("ROLE_WRITER")')]
  71.     #[Route('/{id}'name'app_blog_delete'methods: ['POST'])]
  72.     public function delete(Request $requestBlog $blogBlogRepository $blogRepository): Response
  73.     {
  74.         if ($this->isCsrfTokenValid('delete'.$blog->getId(), $request->request->get('_token'))) {
  75.             $blogRepository->remove($blogtrue);
  76.         }
  77.         return $this->redirectToRoute('app_blog_index', [], Response::HTTP_SEE_OTHER);
  78.     }
  79. }