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 :

Enregistrement multiple dans une seule table [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Par défaut Enregistrement multiple dans une seule table
    Bonjour,

    J'ai un tout petit soucis avec symfony. J'aimerais connaître la méthode pour pouvoir faire plusieurs enregistrement d'un coup avec un seul formulaire qui ne dépend que d'une seule table.

    J'ai une table équipement. Donc dans mon formulaire New, j'ai bien tous les champs lié à l'ajout d'un seul equipement. J'affiche tous les champs inputs dans une table sur une seule ligne, et à terme, je voudrais créer un bouton "ajout ligne" pour pouvoir rajouter une nouvelle ligne pour ajouter un nouvel équipement en plus et en même temps

    Mais avant de créer tous ca dynamiquement, je voudrais simplement que lorsque que je clique sur le lien nouvel équipement, je tombe sur la fiche new, mais avec la possibilité d'ajouter deux équipements d'un coup.

    Déjà est ce possible ? Et si oui, dans quel fichier doit porter mes recherches (comment afficher deux lignes d'un coup ? Faire plusieurs sauvegarde dans la BDD en fonction du nombre de ligne ?)

    Merci d'avance pour votre aide

  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
    J'aurai tendance à penser que les embed forms sont la solution à ce que tu désires.

    Corrige moi si je me trompe, tu veux en réalité pouvoir afficher plusieurs fois le même formulaire pour créer autant d'équipement qu'il y aura de formulaires affichés c'est bien ça ?

    Tu as soit la possibilité d'embarquer autant de formulaires de type equipement que tu le souhaites avec l'aide de la méthode embed, et dans ce cas lorsque tu affiches ton form celui-ci t'affichera tous ceux qui sont embarqués. Au moment de lier tes formulaires, tu n'as qu'à bind le formulaire parent pour que tous les suivants le soient également, et par la même occasion la sauvegarde en BDD.

    Ou alors la solution du goret feignant (ouais j'la vends bien) qui consiste à afficher autant de form que tu as besoin. L’inconvénient c'est que comme son nom l'indique c'est un peu cochon de faire une boucle pour afficher les forms, et une boucle pour les bind ensuite. Mais c'est un chouhia moins prise de tête que les embed lorsqu'on n'a pas l'habitude.

    Cela dit je ne peux que préconiser la première solution qui s'adaptera très bien et qui te servira plus d'une fois car les embed sont assez puissants.

    Donc dans un premier temps en statique tu embarques deux formulaires en dur pour vérifier que ça fonctionne, ensuite tu feras peut-être quelque chose en AJAX pour créer dynamiquement une succession de formulaires embarqués je présume.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Par défaut
    C'est exactement ce que je veux faire.
    J'ai rajouter un "$this->embedForm('equipement', $this);" dans mon formulaire d'équipement.

    Comment est ce que je peux lui dire ensuite, de m'afficher deux lignes d'équipement ?

    Je dois avouer que pour le moment, je voudrais comprendre comment fonctionne l'envoie de formulaire multiple avec symfony. Donc même la méthode "cochon", ca me va

  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
    Pour afficher plusieurs fois le même formulaire, je suis pas sur que l'embed form soit la bonne solution.
    Surtout si ensuite doit s'ajouter une couche AJAX, il vaut mieux que le nombre de formulaire soit géré dans l'action que dans le modèle (après tout il n'y a aucune logique métier en plus, enfin ça me semble plus du ressort du contrôleur).

    L'embedForm je ne l'utilise que dans le cas de formulaires dont les modèles ont une relation Doctrine, pour le reste c'est souvent trop spécifique et autant repenser le processus en entier.

    Sinon, oui, mon côté goret fainéant, je l'assume bien au quotidien

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Par défaut
    Je ne me trompe en disant que pour afficher deux fois mon formulaire, je le fais dans l'action "new" d'équipement ?

    Et dans mon template, je devrais faire un foreach ?

    Ou j'ai définitivement rien compris ?

  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
    Tu as à 50% compris ! ^^

    A priori c'est bien pour une action new que tu veux afficher tes n formulaires donc c'est bien dans cette action que tu vas construire ton form.

    La ou tu te trompes c'est justement que grâces aux embed, tu n'auras pas besoin de faire un foreach pour tes form. Tu as besoin d'un foreach si tu fais un form1, form2, form3, etc. que tu regroupes dans un tableau de form.

    Si tu utilise l'embarquement de formulaires, tu n'as qu'à faire un ou $form est le formulaire parent qui regroupe les n sous-formulaires.

  7. #7
    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 ne suis pas convaincu par ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->embedForm('equipement', $this);
    pour chaque formulaire que tu veux embarquer il faut en instancier un nouveau avant. Et puis compte tenu que tu vas en embarquer plusieurs il faudrait songer à les nommer différemment (equipement.form1, equipement.form2 etc... par exemple)

    Pour l'embarquement de formulaires je ne peux que te conseiller l'excellente (et foisonnante sur la toile) documentation de symfony concernant les formulaires avancés.

    Si tu veux un exemple je peux te rediriger vers un topic que j'avais ouvert il y a quelques semaines ou je débutais moi même avec les formulaires embarqués, c'est un cas sensiblement similaire ... il te suffira juste de l'adapter avec ton propre modèle. Il y a le code qui fonctionnait à la fin et sur lequel tu peux te baser.

    EDIT: @Maerlyn

    J'approuve sur le fait que l'embarquement doit se faire dans l'action et non dans le modèle.
    Par contre, ça ne me dérange pas particulièrement d'avoir plusieurs fois le même formulaire embarqué. C'est même plutôt pratique surtout au moment du bind() qui se fait en cascade. J'étais assez perplexe également sur cette manière de faire ... jusqu'à ce que je l'essaye et qu'elle fonctionne parfaitement bien

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

Discussions similaires

  1. import dans une seule table
    Par mike2302 dans le forum VBA Access
    Réponses: 10
    Dernier message: 28/06/2007, 07h03
  2. Réponses: 5
    Dernier message: 21/06/2007, 08h49
  3. Enregistrement multiple dans une base à partir d'un formulaire
    Par ange_dragon dans le forum Modélisation
    Réponses: 2
    Dernier message: 05/06/2007, 15h28
  4. Réponses: 8
    Dernier message: 03/02/2006, 15h15
  5. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19

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