IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Gérer les messages d'erreurs


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut 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 :
    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 : 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(),
            ]);
        }
    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
    #[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;
    ...

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 310
    Par défaut
    Bonjour,
    Reprend moi si je me trompe mais tu as évoqué une erreur :
    An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'Star Wars IV' for key 'movie.UNIQ_1D5EF26F2B36786B'
    Donc tu peux faire un try catch et chopé l'erreur pour l'afficher dans ton twig ?
    Cdt

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    D'accord merci pour ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre les messages d'erreur apache en francais
    Par Invité(e) dans le forum Apache
    Réponses: 1
    Dernier message: 16/02/2006, 19h33
  2. Rediriger les messages d'erreur
    Par goblin dans le forum Langage
    Réponses: 3
    Dernier message: 25/12/2005, 20h04
  3. Réponses: 5
    Dernier message: 16/08/2005, 12h15
  4. [Message d'erreur] gérer les message d'erreurs
    Par heid dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2004, 14h57
  5. recuperer les messages d'erreurs de interbase
    Par devalender dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2004, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo