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é à true.. [2.x]


Sujet :

Symfony PHP

  1. #1
    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 Formulaire imbriqué à true..
    Bonjour,
    J'ai mon objet uzer,
    qui a une relation M2M avec mon objet uzercateg.

    Je souhaiterai que mon lien entre mon objet uzer et uzercateg soit à true pour tout les entrée que l'on aura pour uzercateg. et je souhaiterai caché cette partie du formulaire.

    Je créé un formulaire externe:
    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
    <?php
     
    namespace SB\UserBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolverInterface;
     
    class UzerType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('lastname', 'text', array('label' => 'nom de famille'))
                ->add('firstname')
                ->add('uzercaracs', 'entity', array(
      'class'    => 'SBUserBundle:UzerCarac',
      'property' => 'title', 'expanded' => true,
      'multiple' => true))
                ->add('uzercategs', 'entity', array(
      'class'    => 'SBUserBundle:UzerCateg',
      'property' => 'title', 'expanded' => true,
      'multiple' => true))
            ;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'SB\UserBundle\Entity\Uzer'
            ));
        }
     
        public function getName()
        {
            return 'sb_userbundle_uzertype';
        }
    }


    voici 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
        public function editAction($id)
        {
            $repository = $this->getDoctrine()
                               ->getManager()
                               ->getRepository('SBUserBundle:Uzer');
     
            $uzer = $repository->find($id);
            $form = $this->createForm(new UzerType, $uzer);
            if($uzer === null)
            {
                throw $this->createNotFoundException('Vous n\'avez pas encore ajouté d\'utilisateur');
            }
            $request = $this->get('request');
            if ($request->getMethod() == 'POST') {
              $form->bind($request);
              if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($uzer);
                $em->flush();
                return $this->redirect($this->generateUrl('uzer_gest_view_user', array('id' => $uzer->getId(),'uzer'=>$uzer)));
                }
              }
            return $this->render('SBUserBundle:UzerGest:edituzer.html.twig', array('id' => $uzer->getId(),'form' => $form->createView()));
        }

  2. #2
    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
    Re,
    je pense mon réel problème est :
    Je n'arrive pas a comprendre sous quel forme sont mes champs input générés et comment je les atteinds les modifies...

    Une grosse aide svp je lis pleins de doc mais je ne trouve pas ...

  3. #3
    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
    Je n'arrive pas a comprendre comment atteindre mon arraycollection issu de ma relation M2M entre mes 2 objet dans mon formulaire...

    A L'AIDE !

    j'essaye ca dans 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
        public function editAction($id)
        {
            $repository = $this->getDoctrine()
                               ->getManager()
                               ->getRepository('SBUserBundle:Uzer');
     
            $uzer = $repository->find($id);
            $form = $this->createForm(new UzerType, $uzer);
            if($uzer === null)
            {
                throw $this->createNotFoundException('Vous n\'avez pas encore ajouté d\'utilisateur');
            }
            $request = $this->get('request');
            if ($request->getMethod() == 'POST') {
              $form->bind($request);
     
     
                foreach ($form->$uzer->getUzercategs() as $categg) {
                    foreach ($categg) {
                            ;
                    }
                }
     
              if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($uzer);
                $em->flush();
                return $this->redirect($this->generateUrl('uzer_gest_view_user', array('id' => $uzer->getId(),'uzer'=>$uzer)));
                }
              }
            return $this->render('SBUserBundle:UzerGest:edituzer.html.twig', array('id' => $uzer->getId(),'form' => $form->createView()));
        }

  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
    J'ai trouvé un autre poste qui avait le meme problème:
    http://www.developpez.net/forums/d11...m-fixer-champ/
    voici mon controleur avec ma boucle mais cela ne fonctionne toujours pas :
    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
        {
            $uzer = new Uzer();
     
            foreach ($uzer->getUzercategs() as $categg) {
                  $uzer->addUzercateg($categg);
     
                }
            $form = $this->createForm(new UzerType, $uzer);
     
     
     
            $request = $this->get('request');
            if ($request->getMethod() == 'POST') {
              $form->bind($request);
     
     
     
              if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($uzer);
                $em->flush();
                $this->get('session')->getFlashBag()->add('info', 'Article bien modifié');
                return $this->redirect($this->generateUrl('uzer_gest_view_user', array('id' => $uzer->getId(),'uzer'=>$uzer)));
                }
              }
            return $this->render('SBUserBundle:UzerGest:newuzer.html.twig', array('form' => $form->createView()));
        }

  5. #5
    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
    Bon j'ai trouvé la solution alors je l'explique pour d'autre après moi ou moi si Al m'atteind :

    Il faut charger indépendement l'entité liée (ici uzercateg), puis faire une boucle en utilisant la methode adduzercateg de l'entité uzer (entité propriétaire).

    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
        {
            $uzer = new Uzer();
     
            $repository = $this->getDoctrine()
                               ->getManager()
                               ->getRepository('SBUserBundle:UzerCateg');
     
            $list_cat = $repository->findAll();
            foreach($list_cat as $categg)
            { $uzer->addUzercateg($categg);}
            $form = $this->createForm(new UzerType, $uzer);
            $request = $this->get('request');
            if ($request->getMethod() == 'POST') {
              $form->bind($request);
     
     
     
              if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($uzer);
                $em->flush();
                $this->get('session')->getFlashBag()->add('info', 'Article bien modifié');
                return $this->redirect($this->generateUrl('uzer_gest_view_user', array('id' => $uzer->getId(),'uzer'=>$uzer)));
                }
              }
            return $this->render('SBUserBundle:UzerGest:newuzer.html.twig', array('form' => $form->createView()));
        }

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

Discussions similaires

  1. [Struts] - Déclenchement d'une action dans un formulaire imbriqué
    Par Dabat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 19/03/2009, 15h14
  2. Parcour des getElementById dans un formulaire imbriqué ?
    Par DrySs dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/10/2007, 19h03
  3. formulaire imbriquer + popup
    Par luan220 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/10/2007, 12h11
  4. Probleme Formulaire imbriques
    Par gloglo dans le forum Struts 1
    Réponses: 10
    Dernier message: 30/08/2006, 20h30
  5. formulaire imbriqué
    Par jani dans le forum Langage
    Réponses: 9
    Dernier message: 18/01/2006, 15h40

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