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 :

Gestion des erreurs d'unicité


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 62
    Points
    62
    Par défaut Gestion des erreurs d'unicité
    Bonjour à tous,

    Je développe un site sous Symfony2 et j'ai créé un espace utilisateurs, tout ce qu'il y a de plus classique. Chaque utilisateur possède deux identifiants qui ont pour contrainte d'être uniques en base de données (à l'aide des infos de mapping de Doctrine) : le pseudo et le mail.

    Quand je soumets l'inscription d'un utilisateur qui dont le pseudo/mail existe déjà en base de données, le serveur me renvoie une erreur 500, avec, en mode dev, un message m'indiquant qu'il y a une "Integrity constraint violation", ce qui est tout à fait normal.

    Quel est mon problème alors ? :p Ce que je voudrais, c'est afficher une erreur plus "accueillante" à l'utilisateur (avec un flashbag par exemple) afin de le prévenir et qu'il puisse recommencer en tenant compte de l'info de l'erreur. Je me dis qu'il faut catcher cette exception, mais puisqu'un message s'affiche, n'est-elle pas déjà attrapée ?

    J'aimerais donc savoir comment faire pour récupérer l'exception et afficher la vue appropriée si elle est soulevée. Sauriez-vous comment faire ?

    Merci d'avance et bonne journée

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Cela concerne le composant validation dont l'objectif est justement d'afficher des messages plus "accueillant" que la page d'erreur 500 lorsque les valeurs fournies sont invalides.
    http://symfony.com/fr/doc/current/book/validation.html

    En utilisant le FOSUserBundle, ces cas sont déjà gérés.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 62
    Points
    62
    Par défaut
    Hum, le composant Validator est utilisé pour la validation des contraintes d'un formulaire, pas de celles de la base de données non ? (les infos de mapping)

    Mon annotation est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @ORM\Column(name="username", type="string", length=50, unique=true)
    Et c'est ce "unique=true" qui déclenche l'erreur 500. Le formulaire en lui-même est valide sinon la tentative d'insertion ne serait pas réalisée.

    Mais peut être que je me trompe ^^ Si c'est le cas je ne serais pas contre des infos supplémentaires Merci en tout cas !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 125
    Points : 108
    Points
    108
    Par défaut
    Salut,
    Donc si tu cherches un peu sur internet et meme sur le site developpez.com tu trouvera des infos. Je te met tout de meme sur la piste:

    Dans un dossier nommé:
    vendor\symfony\symfony\src\Symfony\Bundle\TwigBundle\Resources\views\Exception
    Tu trouvera les fichiers qui sont affichés lors d'une execption.
    Tu peux les modifiers MAIS pas directement, il faut que tu crées des vues dans le dossier : app/Resources/NomDuBundle/views/...

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 62
    Points
    62
    Par défaut
    OK j'ai vu, merci beaucoup

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Hum, le composant Validator est utilisé pour la validation des contraintes d'un formulaire, pas de celles de la base de données non
    Oui, et comme dans Symfony chaque composant est indépendant, il faut avoir à la fois des annotations pour le mapping Doctrine, et des annotations pour la validation.

    En l'occurence, il faut ajouter une annotation de validation "UniqueEntity":
    http://symfony.com/fr/doc/current/re...queEntity.html

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Points : 62
    Points
    62
    Par défaut
    Bien vu je ne connaissais pas l'existence de ces annotations-là ! Merci beaucoup pour ton aide

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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