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

Doctrine2 PHP Discussion :

Récupérer la bonne exception


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut Récupérer la bonne exception
    Bonjour,

    Lors de l'enregistrement en base, j'ai deux contraintes : UNIQUE sur le champ NOM et UNIQUE sur le champ EMAIL.

    Lorsqu'une exception est renvoyée j'affiche une erreur générale à l'utilisateur.

    Maintenant, il faudrait indiquer à l'utilisateur plus de précision sur l'erreur de l'enregistrement : soit erreur sur le champ NOM, soit erreur sur le champ EMAIL.

    Comment savoir quel champ de la table a généré l'exception pour pouvoir donner des informations précises à l'utilisateur ?

    Merci d'avance.

    A+

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Tu crées toi même tes exceptions et tu fais plusieurs blocs catch après ton try. Un qui catch l'exception1, l'autre qui catch l'exception2. Dans chacun des blocs tu mets le message d'erreur correspondant.

  3. #3
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par Nico_F Voir le message
    Tu crées toi même tes exceptions et tu fais plusieurs blocs catch après ton try. Un qui catch l'exception1, l'autre qui catch l'exception2. Dans chacun des blocs tu mets le message d'erreur correspondant.
    Merci pour ta réponse mais la question est comment savoir quelle exception correspond au premier cas et qu'elle exception correspond au second cas.

    a+

  4. #4
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    À l'heure actuelle, quelle classe crache une exception et quel est son contenu ?

  5. #5
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par Nico_F Voir le message
    À l'heure actuelle, quelle classe crache une exception et quel est son contenu ?
    C'est une classe de type contrôleur. Voici la fonction pour laquelle j'aimerai spécialiser l'exception en deux exceptions distinctes :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    public function createAction() {
            $client = new Client();
    
    
            $form = $this->createForm(new ClientType, $client); // On récupère la requête
            $request = $this->get('request');
    
    
            if ($request->getMethod() == 'POST') {
    
    
                $form->bind($request);
    
    
                if ($form->isValid()) {
    
    
                    $em = $this->getDoctrine()->getManager();
    
    
                    foreach ($client->getInterventions() as $intervention) {
                        $client->addIntervention($intervention);
                    }
    
    
                    $em->persist($client);
    
    
                    try {
                        $em->flush();
                    } catch (\Exception $ex) {
                        $this->get('session')->getFlashBag()->add('error', 'ERREUR :<br />Le client n\'a pas été créé.<br />Vérifiez vos données.');
    
    
                        return $this->render('AppliReportBundle:Client:create_update.html.twig', array(
                                    'form' => $form->createView(), 'titre' => 'Créer un client', 'updateP' => false
                        ));
                    }
                }
    
    
                $this->get('session')->getFlashBag()->add('info', 'Le client a été créé.');
    
    
                return $this->redirect($this->generateUrl('appli_report_voir_clients', array('page' => 1)));
            }
    
    
            return $this->render('AppliReportBundle:Client:create_update.html.twig', array(
                        'form' => $form->createView(), 'titre' => 'Créer un client', 'updateP' => false
            ));
        }
    Mais je ne sais pas comment savoir si c'est le nom qui n'est pas unique OU l'adresse email qui n'est pas unique, pour pouvoir avertir l'utilisateur.

    A+

  6. #6
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Je voulais dire la classe de l'exception et le message contenu dans l'exception : en fonction du code d'erreur et du contenu message d'exception du dois pouvoir récupérer le champs concerné et l'extraire (s'il apparait dans l'exception retournée).

    Si tu as par exemple une DBALBullShitException qui te dit "SQL BLABLA #1111: Field 'xxx' must be unique", tu peux récupérer ce champs en l'extrayant du message (avec une regex ou que sais-je encore).
    Une fois que tu as cette donnée, tu dois pouvoir adapter ton message flash.

Discussions similaires

  1. Récupérer type d'exception SoapFault
    Par romcube dans le forum Services Web
    Réponses: 0
    Dernier message: 15/03/2009, 23h49
  2. [MySQL] Récupérer les bonnes réponses d'un formulaire
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/07/2008, 11h58
  3. Réponses: 13
    Dernier message: 10/04/2008, 19h13
  4. Récupérer les bonnes valeurs
    Par AT dans le forum Débuter
    Réponses: 2
    Dernier message: 03/02/2008, 12h47
  5. Récupérer la bonne version d'access
    Par Kloun dans le forum VBA Access
    Réponses: 0
    Dernier message: 25/10/2007, 17h48

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