| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | <?phpnamespace App\Controller\Admin;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Requirement\Requirement;use Symfony\Component\Routing\Attribute\Route;use Doctrine\ORM\EntityManagerInterface;use Symfony\Component\String\Slugger\AsciiSlugger;use App\Entity\Genre;use App\Form\GenreType;use App\Repository\GenreRepository;final class GenreController extends AbstractController{    /*     * Lister tous les genres     */    #[Route('/admin/genre', name: 'app_admin_genre', methods: ['GET'])]    public function index(GenreRepository $repository): Response    {        $genres = $repository->findAll();        return $this->render('admin/genre/index.html.twig', [            'genres' => $genres,        ]);    }    /*     * Supprimer un genre     */    #[Route('/admin/genre/{id}/delete', name: 'app_admin_genre_delete', requirements: ['id' => Requirement::UUID_V7], methods: ['GET'])]    public function delete(?Genre $genre, EntityManagerInterface $manager): Response    {        $manager->remove($genre);        $manager->flush();        $this->addFlash('success', 'Genre supprimé avec succès.');        return $this->redirectToRoute('app_admin_genre');    }    /*      * Modifier un genre     */    #[Route('/admin/genre/{id}/edit', name: 'app_admin_genre_edit', requirements: ['id' => Requirement::UUID_V7], methods: ['GET', 'POST'])]    public function edit(?Genre $genre, Request $request, EntityManagerInterface $manager): Response    {        $form = $this->createForm(GenreType::class, $genre);        $form->handleRequest($request);        if ($form->isSubmitted() && $form->isValid()) {            // Aucun slug n'a été proposé par l'utilisateur            if (!$form->get('slug')->getData()) {                $slugger = new AsciiSlugger('fr_FR');                $genre->setSlug($slugger->slug(strtolower($genre->getGenre())));            }            $manager->persist($genre);            $manager->flush();            $this->addFlash('success', 'Genre ajouté à la base de données avec succès.');            return $this->redirectToRoute('app_admin_genre');        }        return $this->render('admin/genre/edit.html.twig', [            'form' => $form,            'genre' => $genre,        ]);    }    /*      * Ajouter un genre     */    #[Route('/admin/genre/add', name: 'app_admin_genre_add', methods: ['GET', 'POST'])]    public function add(Request $request, EntityManagerInterface $manager): Response    {        $genre = new Genre();        $form = $this->createForm(GenreType::class, $genre);        $form->handleRequest($request);        if ($form->isSubmitted() && $form->isValid()) {            // Aucun slug n'a été proposé par l'utilisateur            if (!$form->get('slug')->getData()) {                $slugger = new AsciiSlugger('fr_FR');                $genre->setSlug($slugger->slug(strtolower($genre->getGenre())));            }            $manager->persist($genre);            $manager->flush();            $this->addFlash('success', 'Genre ajouté à la base de données avec succès.');            return $this->redirectToRoute('app_admin_genre');        }        return $this->render('admin/genre/edit.html.twig', [            'form' => $form,        ]);    }}
 |