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 :

Formulaire imbriqué et suppression de données [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut Formulaire imbriqué et suppression de données
    Bonjour à tous,

    Je suis actuellement confronté à un problème qui me semble assez bizarre. J'ai une entité Menu ayant une relation OneToMany vers elle même afin de définir une liste de sous menu. Jusque la tout vas bien, tout fonctionne pour le mieux.
    Afin d'administrer mon menu j'ai donc un formulaire avec un élément collection qui permet d'ajouter à la volé ses sous-menu.

    L'ajout fonctionne parfaitement, mais la suppression me pose soucis, en effet j'ai eu beau suivre le cookbook et sa section Doctrine: Assurer la persistence dans la base de données mais rien n'y fait mes sous-menu ne sont pas supprimé.

    En debug je me rend compte qu'après le bind() de mon formulaire, mon ArrayCollection de sous-menu contient les sous-menu en "double", en faite il conserve ceux existant par défaut et y rajoute ceux validé dans le formulaire, ce qui pourrait se décrire de la façon suivante :

    // sous-menu au début du processus
    1 - mon premier sous-menu
    2 - mon second sous-menu

    // validation du formulaire sans aucune suppression
    1 - mon premier sous-menu // ne devrait plus être la
    2 - mon second sous-menu // ne devrait plus être la
    1 - mon premier sous-menu
    2 - mon second sous-menu

    // validation du formulaire avec suppression du second sous-menu
    1 - mon premier sous-menu
    2 - mon second sous-menu
    1 - mon premier sous-menu

    // validation du formulaire avec suppression des deux sous-menu
    1 - mon premier sous-menu
    2 - mon second sous-menu
    On voit donc que les sous-menu pre-existant sont conservé et j'ai beau supprimer les elements de mon formulaire rien ne se répercute dans la base puisque les anciennes valeurs sont toujours ds mon ArrayCollection

    Si quelqu'un à une idée de solution car la je ne comprend vraiment pas
    Merci d'avance à tous

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    J'ai trouvé la solution, j'utilise l'extension doctrine Gedmo Nested Tree pour gérer mon arbre de sous-menu et ma fonction d'ajout était nommé addChildren() au lieu de addChild()... Je ne sais pas comment le pluriel et le singulier sont gérés par symfony ou par l'extension mais ce n'est pas spécifié dans la doc , bref du temps de perdu pour un détail :/

    Merci à ceux qui se sont penché sur le cas.

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

Discussions similaires

  1. [AC-2007] Ajout et suppression de données dans un sous-formulaire
    Par crisjax dans le forum IHM
    Réponses: 5
    Dernier message: 12/04/2010, 22h31
  2. formulaire de suppression de données
    Par bidule123456 dans le forum Langage
    Réponses: 10
    Dernier message: 24/07/2007, 14h00
  3. suppression de données d'un ss formulaire
    Par Hélo2204 dans le forum IHM
    Réponses: 1
    Dernier message: 13/07/2007, 19h41
  4. [Formulaire] Alerte avant suppression d'une donnée via un formulaire
    Par leloup84 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/01/2006, 10h50

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