src/Controller/Back/ProductPageController.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Back;
  3. use App\Entity\ProductPage;
  4. use App\Form\ProductPageType;
  5. use App\Services\UploadFileService;
  6. use App\Repository\ProductPageRepository;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\File\UploadedFile;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\String\Slugger\SluggerInterface;
  13. /**
  14.  * @Route("/admin")
  15.  */
  16. class ProductPageController extends AbstractController
  17. {
  18.     /**
  19.      * @var EntityManagerInterface
  20.      */
  21.     private EntityManagerInterface $em;
  22.     /**
  23.      * @var SluggerInterface
  24.      */
  25.     private SluggerInterface $slugger;
  26.     /**
  27.      * @var UploadFileService
  28.      */
  29.     private UploadFileService $uploadFileService;
  30.     public function __construct(UploadFileService $uploadFileServiceEntityManagerInterface $emSluggerInterface $slugger)
  31.     {
  32.         $this->em $em;
  33.         $this->slugger $slugger;
  34.         $this->uploadFileService $uploadFileService;
  35.     }
  36.     /**
  37.      * @Route("/product-page/list", name="back_product_page_list")
  38.      */
  39.     public function list(ProductPageRepository $productPageRepository)
  40.     {
  41.         return $this->render('back/product_page/list.html.twig', [
  42.             'productPages' => $productPageRepository->findBy([], ['id' => 'DESC'])
  43.         ]);
  44.     }
  45.     /**
  46.      * @Route("/product-page/add", name="back_product_page_add")
  47.      */
  48.     public function add(Request $request)
  49.     {
  50.         $productPage = new ProductPage();
  51.         $form $this->createForm(ProductPageType::class, $productPage)->handleRequest($request);
  52.         if ($form->isSubmitted() && $form->isValid()) {
  53.             $sluggedName $this->slugger->slug($productPage->getName())->lower();
  54.             $productPage->setSlug($sluggedName);
  55.             if ($productPage->getDocument() instanceof UploadedFile) {
  56.                 $documentUploaded $this->uploadFileService->uploadImage($productPage->getDocument());
  57.                 $productPage->setDocument($documentUploaded);
  58.             }
  59.             foreach ($productPage->getImages() as $image) {
  60.                 $filename $this->uploadFileService->uploadImage($image->getName());
  61.                 $image->setName($filename);
  62.             }
  63.             $this->em->persist($productPage);
  64.             $this->em->flush();
  65.             $this->addFlash('success''Page produit créée');
  66.             return $this->redirectToRoute('back_product_page_list');
  67.         }
  68.         return $this->render('back/product_page/add.html.twig', [
  69.             'form' => $form->createView(),
  70.             'productPage' => $productPage
  71.         ]);
  72.     }
  73.     /**
  74.      * @Route("/product-page/edit/{id}", name="back_product_page_edit")
  75.      */
  76.     public function edit(ProductPage $productPageRequest $request)
  77.     {
  78.         $oldDocument $productPage->getDocument();
  79.         $arrayImages = [];
  80.         foreach ($productPage->getImages() as $image) {
  81.             $arrayImages[$image->getId()] = $image->getName();
  82.         }
  83.         $form $this->createForm(ProductPageType::class, $productPage)->handleRequest($request);
  84.         if ($form->isSubmitted() && $form->isValid()) {
  85.             $sluggedName $this->slugger->slug($productPage->getName())->lower();
  86.             $productPage->setSlug($sluggedName);
  87.             if ($productPage->getDocument() instanceof UploadedFile) {
  88.                 $documentUploaded $this->uploadFileService->uploadImage($productPage->getDocument());
  89.                 $productPage->setDocument($documentUploaded);
  90.             } else {
  91.                 $productPage->setDocument($oldDocument);
  92.             }
  93.             foreach ($productPage->getImages() as $image) {
  94.                 if ($image->getName() instanceof UploadedFile) {
  95.                     $filename $this->uploadFileService->uploadImage($image->getName());
  96.                     $image->setName($filename);
  97.                     $productPage->addImage($image);
  98.                 } else {
  99.                     if (array_key_exists($image->getId(), $arrayImages)) {
  100.                         $image->setName($arrayImages[$image->getId()]);
  101.                     }
  102.                 }
  103.             }
  104.             $this->em->persist($productPage);
  105.             $this->em->flush();
  106.             $this->addFlash('success''Page produit éditée');
  107.             return $this->redirectToRoute('back_product_page_list');
  108.         }
  109.         return $this->render('back/product_page/edit.html.twig', [
  110.             'form' => $form->createView(),
  111.             'productPage' => $productPage
  112.         ]);
  113.     }
  114.     /**
  115.      * @Route("/product-page/remove/{id}", name="back_product_page_remove")
  116.      */
  117.     public function remove(ProductPage $productPage)
  118.     {
  119.         $this->em->remove($productPage);
  120.         $this->em->flush();
  121.         $this->addFlash('success''Page produit supprimée');
  122.         return $this->redirectToRoute('back_product_page_list');
  123.     }
  124. }