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 :

Mettre 2 formulaires gérant chacun une entité sur la même page twig [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut Mettre 2 formulaires gérant chacun une entité sur la même page twig
    Bonjour à tous.
    voici mes code html.twig
    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
     
    <form action="{{ path("_LaLingerie_accueil") }}" method="post" {{ form_enctype(form) }}>
     
                    {# Les erreurs générales du formulaire. #}
                    {{ form_errors(form) }}
     
                    {# Idem pour un autre champ. #}
                    <div>
                        {{ form_label(form.speudo, 'speudo') }}
                        {{ form_errors(form.speudo) }}
                        {{ form_widget(form.speudo) }}
                    </div>
     
                    <div>
     
                        {{ form_label(form.adresseemail, 'email') }}
                        {{ form_errors(form.speudo) }}
                        {{ form_widget(form.speudo) }}
                    </div>
     
                    <div>
     
                        {{ form_label(form.password, 'mot de pazsse') }}
                        {{ form_errors(form.password) }}
                        {{ form_widget(form.password) }}
                    </div>
     
                    <input type="submit" />
                    {{ form_end(form) }}
                </form>
    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
     
     <form action="{{ path("_LaLingerie_homepage") }}" method="post" {{ form_enctype(form) }}>
     
                    {# Les erreurs générales du formulaire. #}
                    {{ form_errors(form) }}
     
                    {# Idem pour un autre champ. #}
                    <div>
                        {{ form_label(form.contenu, "Contenu de l'article") }}
                        {{ form_errors(form.contenu) }}
                        {{ form_widget(form.contenu) }}
                    </div>
     
                    <div>
     
                        {{ form_label(form.datecreationcommentaire, 'date') }}
                        {{ form_errors(form.datecreationcommentaire) }}
                        {{ form_widget(form.datecreationcommentaire) }}
                    </div>
     
                    <input type="submit" />
                    {{ form_end(form) }}
                </form>
    voici les route
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    _LaLingerie_homepage     ANY    ANY    ANY  /                                 
     _LaLingerie_accueil      ANY    ANY    ANY  /
    mon controleur
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    class DefaultController extends Controller
    {
     
     
        public function indexAction()
        {
     
     
            $commentaire = new Commentaire();
     
     
            $form = $this->createForm(new CommentaireType(), $commentaire);
     
            $request = $this->get('request');
     
     
            if ($request->getMethod() == 'POST') {
                $form->bind($request);
                if( $form->isValid() )
                {
     
     
                    $em = $this->getDoctrine()->getManager();
     
     
     
                    $em->persist($commentaire);
                    $em->flush();
     
     
     
                    return $this->redirect($this->generateUrl('_LaLingerie_accueil'));
     
                }
            }
            return $this->render('LaLingerieBundle:Default:index.html.twig',array(
                'form' => $form->createView()));
     
        }
     
        public function accueilAction() {
     
            $commentateur = new Commentateur();
            $form = $this->createForm(new CommentaireType(), $commentateur);
     
            $request = $this->get('request');
     
     
            if ($request->getMethod() == 'POST') {
                $form->bind($request);
                if( $form->isValid() )
                {
     
     
                    $em = $this->getDoctrine()->getManager();
     
     
                    $em->persist($commentateur);
                    $em->flush();
     
     
     
                    return $this->redirect($this->generateUrl('_LaLingerie_accueil'));
     
                }
            }
            return $this->render('LaLingerieBundle:Default:index.html.twig',array(
                'form2' => $form->createView()));
     
        }
    Merci pour vos attention.

  2. #2
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    De mieux en mieux ... d'habitude il faut deviner la solution mais là il faut aussi deviner le problème.
    Je crois que je vais faire pareil : ouvrir un nouveau topic, balancer les 100.000 lignes de code de mon projet et dire : "Faites vous un kiff les enfants".

  3. #3
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    ah désolais.
    En fait ma question est "comment maitre deux formulaire d'entité différante sur la même page.
    Merci

  4. #4
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    De la même manière que tu en mets un ... sauf que tu le fais deux fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form>
       ...
    </form>
     
    <form>
       ...
    </form>
    Je ne vois toujours pas ou est le problème.
    [EDIT] Je vois ou est le problème : si tu construis tes formulaires dans deux actions différentes avec deux templates différentes, ils sont pas prêts de se retrouver sur la même page.

  5. #5
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    je vois 2 solutions pour le faire.

    Soit tu fais 2 render sur twig pour chaque action, pas beau selon moi
    Soit tu passe a ta vue 2 objet form, $form1 et $form 2 et ca devrait fonctionner.

    Mais franchement, améliore ta prose et fait attention quand tu poses des questions... maitre a la place de mettre, c'est pas facile a lire avec ce genre de fautes.

  6. #6
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    merci de votre part.

  7. #7
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    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
    54
    55
    56
     
     public function indexAction()
        {
     
     
            $commentaire = new Commentaire();
     
     
            $commentateur = new Commentateur();
     
            $form1 = $this->createFormBuilder($commentateur)
                ->add('speudo','text')
                ->add('password','password')
                ->add('adresseemail','text')
                ->getForm();
     
     
     
            $form2 = $this->createFormBuilder($commentaire)
                ->add('contenu','textarea')
                ->add('datecreationcommentaire','datetime', array(
                    'widget' => 'single_text',
                    'format' => 'dd-MM-yyyy hh:mm:ss',
                ))
                ->getForm();
     
            $request = $this->get('request');
     
     
            if ($request->getMethod() == 'POST') {
                $form1->bind($request);
                if ($form1->isValid()) {
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($commentateur);
                    $em->flush();
                    return $this->redirect($this->generateUrl('LaLingerie_commentateur'));
                }
            }
     
     
           if ($request->getMethod() == 'POST') {
                $form2->bind($request);
                if ($form2->isValid() ) {
                    $em = $this->getDoctrine()->getManager();
                    $em->persist($commentaire);
                    $em->flush();
                    return $this->redirect($this->generateUrl('LaLingerie_commentataire'));
     
                }
           }
     
            return $this->render('LaLingerieBundle:Default:index.html.twig', array(
                'form' => $form1->createView(),
                'form2' => $form2 ->createView()));
     
        }
    ci dessus deux formulaires pour gérer deux entité

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

Discussions similaires

  1. Afficher une image sur la même page en cliquant sur un lien
    Par phenix1988 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 31/10/2019, 19h20
  2. Réponses: 1
    Dernier message: 06/01/2012, 00h31
  3. Affichage du résultat d'une requête sur la même page html
    Par hanadi_09 dans le forum Développement Web en Java
    Réponses: 9
    Dernier message: 24/10/2010, 08h18
  4. Réponses: 9
    Dernier message: 23/06/2008, 15h54
  5. le sous formulaire s'affiche une fois sur deux
    Par Math dans le forum Access
    Réponses: 16
    Dernier message: 10/10/2005, 15h25

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