src/Controller/RoutesController.php line 93

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Routes;
  4. use App\Form\RoutesType;
  5. use App\Repository\RoutesRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\String\Slugger\SluggerInterface;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use App\Entity\Fichiers;
  13. /**
  14.  * @Route("/routes")
  15.  */
  16. class RoutesController extends AbstractController
  17. {
  18.     /**
  19.      * @Route("/", name="routes_index", methods={"GET"})
  20.      */
  21.     public function index(RoutesRepository $routesRepository): Response
  22.     {
  23.         return $this->render('routes/index.html.twig', [
  24.             'routes' => $routesRepository->findAll(),
  25.         ]);
  26.     }
  27.     /**
  28.      * @Route("/new", name="routes_new", methods={"GET","POST"})
  29.      */
  30.     public function new(Request $requestSluggerInterface $slugger): Response {
  31.         $route = new Routes();
  32.         $form $this->createForm(RoutesType::class, $route);
  33.         $form->handleRequest($request);
  34.         if ($form->isSubmitted() && $form->isValid()) {
  35.             // On récupère les fichiers transmises
  36.             $fichiers $form->get('fichiers')->getData();
  37.             // On boucle sur les fichiers
  38.             foreach ($fichiers as $fichier) {
  39.                 // On génère un nouveau nom de fichier
  40.                 $originalFilename pathinfo($fichier->getClientOriginalName(), PATHINFO_FILENAME);
  41.                 $safeFilename $slugger->slug($originalFilename);
  42.                 $newFilename $safeFilename '-' uniqid() . '.' $fichier->guessExtension();
  43.                 // var_dump($fichier);
  44.                 // On copie le fichier dans le dossier uploads
  45.                 try {
  46.                     $fichier->move(
  47.                             $this->getParameter('fichiers_directory'),
  48.                             $newFilename
  49.                     );
  50.                 } catch (FileException $e) {
  51.                     // ... handle exception if something happens during file upload
  52.                 }
  53.                 // On crée l'fichier dans la base de données
  54.                 $fich = new Fichiers();
  55.                 $fich->setNom($newFilename);
  56.                 $fich->setRnom($safeFilename);
  57.                 $route->addFichier($fich);
  58.             }
  59.             $entityManager $this->getDoctrine()->getManager();
  60.             $entityManager->persist($route);
  61.             $entityManager->flush();
  62.             return $this->redirectToRoute('routes_index');
  63.         }
  64.         return $this->renderForm('routes/new.html.twig', [
  65.                     'route' => $route,
  66.                     'form' => $form,
  67.         ]);
  68.     }
  69.     /**
  70.      * @Route("/{id}", name="routes_show", methods={"GET"})
  71.      */
  72.     public function show(Routes $route): Response {
  73.         return $this->render('routes/show.html.twig', [
  74.                     'route' => $route,
  75.         ]);
  76.     }
  77.     /**
  78.      * @Route("/{id}/edit", name="routes_edit", methods={"GET","POST"})
  79.      */
  80.     public function edit(Request $requestRoutes $routeSluggerInterface $slugger): Response {
  81.         $form $this->createForm(RoutesType::class, $route);
  82.         $form->handleRequest($request);
  83.         if ($form->isSubmitted() && $form->isValid()) {
  84.             $fichiers $form->get('fichiers')->getData();
  85.             // On boucle sur les fichiers
  86.             foreach ($fichiers as $fichier) {
  87.                 // On génère un nouveau nom de fichier
  88.                 $originalFilename pathinfo($fichier->getClientOriginalName(), PATHINFO_FILENAME);
  89.                 $safeFilename $slugger->slug($originalFilename);
  90.                 $newFilename $safeFilename '-' uniqid() . '.' $fichier->guessExtension();
  91.                 // var_dump($fichier);
  92.                 // On copie le fichier dans le dossier uploads
  93.                 try {
  94.                     $fichier->move(
  95.                             $this->getParameter('fichiers_directory'),
  96.                             $newFilename
  97.                     );
  98.                 } catch (FileException $e) {
  99.                     // ... handle exception if something happens during file upload
  100.                 }
  101.                 // On crée l'fichier dans la base de données
  102.                 $fich = new Fichiers();
  103.                 $fich->setNom($newFilename);
  104.                 $fich->setRnom($safeFilename);
  105.                 $route->addFichier($fich);
  106.             }
  107.             $this->getDoctrine()->getManager()->flush();
  108.             return $this->redirectToRoute('routes_index', [], Response::HTTP_SEE_OTHER);
  109.         }
  110.         return $this->renderForm('routes/edit.html.twig', [
  111.                     'route' => $route,
  112.                     'form' => $form,
  113.         ]);
  114.     }
  115.     /**
  116.      * @Route("/{id}", name="routes_delete", methods={"POST"})
  117.      */
  118.     public function delete(Request $requestRoutes $route): Response {
  119.         if ($this->isCsrfTokenValid('delete' $route->getId(), $request->request->get('_token'))) {
  120.             $entityManager $this->getDoctrine()->getManager();
  121.             $entityManager->remove($route);
  122.             $entityManager->flush();
  123.         }
  124.         return $this->redirectToRoute('routes_index', [], Response::HTTP_SEE_OTHER);
  125.     }
  126.     /**
  127.      * @Route("/delete/fichier/{id}", name="routes_delete_fichier", methods={"DELETE"}, requirements={"id":"\d+"})
  128.      */
  129.     public function deleteImage(Fichiers $fichierRequest $request) {
  130.         $data json_decode($request->getContent(), true);
  131.         // On vérifie si le token est valide
  132.         if ($this->isCsrfTokenValid('delete' $fichier->getId(), $data['_token'])) {
  133.             // On récupère le nom de l'image
  134.             $nom $fichier->getNom();
  135.             // On supprime le fichier
  136.             unlink($this->getParameter('fichiers_directory') . '/' $nom);
  137.             // On supprime l'entrée de la base
  138.             $em $this->getDoctrine()->getManager();
  139.             $em->remove($fichier);
  140.             $em->flush();
  141.             // On répond en json
  142.             return new JsonResponse(['success' => 1]);
  143.         } else {
  144.             return new JsonResponse(['error' => 'Token Invalide'], 400);
  145.         }
  146.     }
  147. }