Bonjour,
Je souhaiterai savoir comment gérer les messages d'erreurs venant notamment de la base de données.
J'ai une méthode add qui ajoute un film dans la table movie, j'ai mis une contrainte d'unicité sur le champs title, ce qui fait que si j'ajoute un film avec le même titre j'ai l'erreur suivante :
Mais le problème c'est que la méthode flush ne renvoi rien, donc je ne sais pas comment récupérer cette erreur avec son message pour l'améliorer (le rendre visible pour l'utilisateur) et l'afficher dans Twig.An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Star Wars IV' for key 'movie.UNIQ_1D5EF26F2B36786B'
Mon code est le suivant dans mon controller :
Et mon entité avec l'attribut titre et sa contrainte d'unicité :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #[Route('/add', name: 'add')] public function add(Request $request, Slugger $slugger): Response { $movie=new Movie(); $form=$this->createForm(MovieType::class, $movie); $form->handleRequest($request); if($form->isSubmitted() && $form->isValid()){ $movie->setSlug($slugger->slugify($movie->getTitle())); $em=$this->doctrine->getManager(); $em->persist($movie); $em->flush(); return $this->redirectToRoute('admin_movie_list'); } return $this->render('admin/movie/add.html.twig', [ 'form'=>$form->createView(), ]); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #[ORM\Entity(repositoryClass: MovieRepository::class)] class Movie { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255, unique: true)] private ?string $title = null; ...
Partager