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 :

Suppression enregistrement référencé


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 321
    Par défaut Suppression enregistrement référencé
    Bonjour,
    Voici l'exemple de ce que je veux faire :

    Une voiture à une couleur et cette couleur est une table à part.
    Dans la table voiture on a donc un attribut couleur_id.

    Si on supprime une couleur et que celle ci est référencée dans la table voiture alors il y a une erreur.
    C'est ce que je souhaite comme comportement (je ne souhaite pas mettre couleur_id à NULL par exemple). Par contre je voudrai avoir un message d'erreur propre et pas la page erreur500 de symfony...

    Quel moyens ou outils avons nous pour faire cela ?

  2. #2
    Membre éprouvé Avatar de Maerlyn31
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Par défaut
    Hello,

    Quel message d'erreur obtiens-tu exactement ? Passe en mode _dev pour le savoir si tu n'as pour l'instant que l'erreur 500.

    Ensuite tout dépend de ce que tu souhaite comme "erreur propre".
    Tu peux surcharger la page 500 pour en avoir une personnalisée qui affichera un message d'erreur choisi, ou bien arrêter l'exécution de l'action pour ne renvoyer qu'un texte/partial différent de celui d'origine, ou bien encore, si ton erreur est provoquée dans la vue (dans un template), tester ton champ couleur_id juste avant de l'afficher pour avoir un affichage différent selon qu'il est défini ou pas ...

    Doctrine offre aussi des options interessantes pour gérer les suppressions qui impactent d'autres entités : va faire un tour sur http://www.doctrine-project.org/proj...ve-persistence ça te donnera peut être des idées

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 321
    Par défaut
    Merci de ta réponse,
    Il s'agit d'une erreur Mysql liée aux contraintes, ce qui est logique puisque j'essaye de supprimer un élément qui est référencé dans une autre table.

    Je voudrais simplement que cela me remette sur la page précédente avec un setFlash() disant impossible de supprimer etc...

  4. #4
    Membre éprouvé Avatar de Maerlyn31
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 71
    Par défaut
    Alors je n'ai pas de modèle sous la main permettant de tester ce qui va suivre, mais je pense que ça devrait fonctionner :

    Sur ta page d'erreur tu dois avoir le nom de l'exception ("Doctrine_Query_Exception" ou quelque chose du même genre). Note toi le, puis dans ton action, ajoute quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ......
    try{
        $tonObjet->delete();    // Tu dois forcément avoir ce delete déjà quelque part pour supprimer l'objet
    } catch (Doctrine_Query_Excetion $e) { // Ici remplace par l'exception que tu aura trouvé sur la page d'erreur 500
        $this->getuser()->setFlash('Erreur lors de la suppression');  // Envoi du message flash
        $this->redirect('@taPageDeRetour');
    }
    .....

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/06/2010, 14h24
  2. [MySQL] Problème suppression enregistrement
    Par Le Mad dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/05/2006, 18h29
  3. Suppression enregistrement dans une table
    Par elkhy dans le forum Access
    Réponses: 3
    Dernier message: 25/04/2006, 15h29
  4. suppression enregistrement dans un formulaire
    Par oniric dans le forum Access
    Réponses: 3
    Dernier message: 13/04/2006, 12h51
  5. Suppression enregistrement via recordset
    Par CCRNP dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/03/2006, 10h41

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