Gérer les messages d'erreurs
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 :
Citation:
An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Star Wars IV' for key 'movie.UNIQ_1D5EF26F2B36786B'
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.
Mon code est le suivant dans mon controller :
Code:
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(),
]);
} |
Et mon entité avec l'attribut titre et sa contrainte d'unicité :
Code:
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;
... |