src/Controller/Back/PostController.php line 97

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Back;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use App\Entity\Post;
  8. use App\Form\PostType;
  9. use App\Services\UploadFileService;
  10. use App\Repository\PostRepository;
  11. use Symfony\Component\HttpFoundation\File\UploadedFile;
  12. use Symfony\Component\String\Slugger\SluggerInterface;
  13. /**
  14.  * @Route("/admin/actualites")
  15.  */
  16. class PostController extends AbstractController
  17. {
  18.     /**
  19.      * @var EntityManagerInterface
  20.      */
  21.     private $em;
  22.     /**
  23.      * @var SluggerInterface
  24.      */
  25.     private $slugger;
  26.     /**
  27.      * @var UploadFileService
  28.      */
  29.     private UploadFileService $uploadFileService;
  30.     public function __construct(EntityManagerInterface $emSluggerInterface $sluggerUploadFileService $uploadFileService)
  31.     {
  32.         $this->em $em;
  33.         $this->slugger $slugger;
  34.         $this->uploadFileService $uploadFileService;
  35.     }
  36.     /**
  37.      * @Route("/liste", name="back_post_list")
  38.      */
  39.     public function list(PostRepository $postRepository)
  40.     {
  41.         return $this->render('back/post/list.html.twig', [
  42.             'posts' => $postRepository->findBy([], ['id' => 'DESC'])
  43.         ]);
  44.     }
  45.     /**
  46.      * @Route("/ajouter", name="back_post_add")
  47.      */
  48.     public function add(Request $request)
  49.     {
  50.         $post = new Post();
  51.         $form $this->createForm(PostType::class, $post)->handleRequest($request);
  52.         if ($form->isSubmitted() && $form->isValid()) {
  53.             if ($post->getImage() instanceof UploadedFile) {
  54.                 $image $this->uploadFileService->uploadImage($post->getImage(), UploadFileService::POST_IMAGE_DIR);
  55.                 $post->setImage($image);
  56.             }
  57.             $post->setSlug($this->slugger->slug($post->getTitle())->lower());
  58.             $this->em->persist($post);
  59.             $this->em->flush();
  60.             $this->addFlash('success''Post créé !');
  61.             return $this->redirectToRoute('back_post_list');
  62.         }
  63.         return $this->render('back/post/add.html.twig', [
  64.             'form' => $form->createView(),
  65.             'post' => $post
  66.         ]);
  67.     }
  68.     /**
  69.      * @Route("/supprimer/{id}", name="back_post_delete")
  70.      */
  71.     public function delete(Post $post)
  72.     {
  73.         $this->em->remove($post);
  74.         $this->em->flush();
  75.         $this->addFlash('success''Post supprimé !');
  76.         return $this->redirectToRoute('back_post_list');
  77.     }
  78.     /**
  79.      * @Route("/edit/{id}", name="back_post_edit")
  80.      */
  81.     public function edit(Post $postRequest $request)
  82.     {
  83.         $oldImage $post->getImage();
  84.         $form $this->createForm(PostType::class, $post)->handleRequest($request);
  85.         if($form->isSubmitted() && $form->isValid()) {
  86.             if ($post->getImage() instanceof UploadedFile) {
  87.                 $image $this->uploadFileService->uploadImage($post->getImage(), UploadFileService::POST_IMAGE_DIR);
  88.                 $post->setImage($image);
  89.             } else {
  90.                 $post->setImage($oldImage);
  91.             }
  92.             $post->setSlug($this->slugger->slug($post->getTitle())->lower());
  93.             $this->em->flush();
  94.             $this->addFlash('success''Post édité !');
  95.             return $this->redirectToRoute('back_post_list');
  96.         }
  97.         return $this->render('back/post/edit.html.twig', [
  98.             'form' => $form->createView(),
  99.             'post' => $post
  100.         ]);
  101.     }
  102. }