GenreController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace App\Controller\Admin;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Requirement\Requirement;
  7. use Symfony\Component\Routing\Attribute\Route;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\String\Slugger\AsciiSlugger;
  10. use App\Entity\Genre;
  11. use App\Form\GenreType;
  12. use App\Repository\GenreRepository;
  13. final class GenreController extends AbstractController
  14. {
  15. /*
  16. * Lister tous les genres
  17. */
  18. #[Route('/admin/genre', name: 'app_admin_genre', methods: ['GET'])]
  19. public function index(GenreRepository $repository): Response
  20. {
  21. $genres = $repository->findAll();
  22. return $this->render('admin/genre/index.html.twig', [
  23. 'genres' => $genres,
  24. ]);
  25. }
  26. /*
  27. * Supprimer un genre
  28. */
  29. #[Route('/admin/genre/{id}/delete', name: 'app_admin_genre_delete', requirements: ['id' => Requirement::UUID_V7], methods: ['GET'])]
  30. public function delete(?Genre $genre, EntityManagerInterface $manager): Response
  31. {
  32. $manager->remove($genre);
  33. $manager->flush();
  34. $this->addFlash('success', 'Genre supprimé avec succès.');
  35. return $this->redirectToRoute('app_admin_genre');
  36. }
  37. /*
  38. * Modifier un genre
  39. */
  40. #[Route('/admin/genre/{id}/edit', name: 'app_admin_genre_edit', requirements: ['id' => Requirement::UUID_V7], methods: ['GET', 'POST'])]
  41. public function edit(?Genre $genre, Request $request, EntityManagerInterface $manager): Response
  42. {
  43. $form = $this->createForm(GenreType::class, $genre);
  44. $form->handleRequest($request);
  45. if ($form->isSubmitted() && $form->isValid()) {
  46. // Aucun slug n'a été proposé par l'utilisateur
  47. if (!$form->get('slug')->getData()) {
  48. $slugger = new AsciiSlugger('fr_FR');
  49. $genre->setSlug($slugger->slug(strtolower($genre->getGenre())));
  50. }
  51. $manager->persist($genre);
  52. $manager->flush();
  53. $this->addFlash('success', 'Genre ajouté à la base de données avec succès.');
  54. return $this->redirectToRoute('app_admin_genre');
  55. }
  56. return $this->render('admin/genre/edit.html.twig', [
  57. 'form' => $form,
  58. 'genre' => $genre,
  59. ]);
  60. }
  61. /*
  62. * Ajouter un genre
  63. */
  64. #[Route('/admin/genre/add', name: 'app_admin_genre_add', methods: ['GET', 'POST'])]
  65. public function add(Request $request, EntityManagerInterface $manager): Response
  66. {
  67. $genre = new Genre();
  68. $form = $this->createForm(GenreType::class, $genre);
  69. $form->handleRequest($request);
  70. if ($form->isSubmitted() && $form->isValid()) {
  71. // Aucun slug n'a été proposé par l'utilisateur
  72. if (!$form->get('slug')->getData()) {
  73. $slugger = new AsciiSlugger('fr_FR');
  74. $genre->setSlug($slugger->slug(strtolower($genre->getGenre())));
  75. }
  76. $manager->persist($genre);
  77. $manager->flush();
  78. $this->addFlash('success', 'Genre ajouté à la base de données avec succès.');
  79. return $this->redirectToRoute('app_admin_genre');
  80. }
  81. return $this->render('admin/genre/edit.html.twig', [
  82. 'form' => $form,
  83. ]);
  84. }
  85. }