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 de collection entités


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Formulaire de collection entités
    Bonjour,

    Je souhaite réaliser un questionnaire. J'ai une entité questionnaire avec ses chapitres qui contiennent des paramètres (ce sont les questions du formulaire) avec ses réponses. J'ai crée les entités Questionnaire,Chapitres,Parametre,Reponse avec les relation OneToMany. Y'a t-il des annotation a ajouter pour utiliser les collections dans le formulaire (exemple:cascade={"persist"})?

    Dans mon controller je crée mon formulaire QuestionnaireType en lui donnant l'entité Questionnaire:
    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
     
    class ReportingController extends Controller
    {
        public function questionnaireAction()
        {
    		$em = $this->container->get('doctrine')->getEntityManager();		
    		$chapitres= $em->getRepository('ODMReportingBundle:Chapitre')->findAll();
     
     $questionnaire = new Questionnaire();
            foreach($chapitres as $c)
     		{
     			foreach($c->getParametres() as $p)
     			{			
     				$reponse = new Reponse();
    				$p->addReponses($reponse);
     
     			}
     			$questionnaire->addChapitres($c);
     		}
    		$form = $this->createForm(new QuestionnaireType(), $questionnaire);
    		return $this->container->get('templating')->renderResponse('ODMReportingBundle:Reporting:test.html.twig', array(
    					'chapitres' => $chapitres,
    					'form' => $form->createView()
    				));
    }
    Formulaire questionnaire avec la collection chapitres:
    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
     
    class QuestionnaireType extends AbstractType
    {
     	public function buildForm(FormBuilder $builder, array $options) {
     
            $builder->add('chapitres', 'collection', array('label' => 'QUESTIONNAIRE' ,'type' => new ChapitreType(), 'allow_add' => true,
                      'allow_delete' => true,
                      'prototype' => true,
    				) );
        }
     
        public function getDefaultOptions(array $options) {
            return array(
                'data_class' => 'ODM\ReportingBundle\Entity\Questionnaire',
                'validation_groups' => array('registration')
            );
        }
     
        public function getName() {
            return 'questionnaire';
        }
    }
    Formulaire Chapitre avec la collection parametres:
    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
     
    class ChapitreType extends AbstractType
    {
    	public function buildForm(FormBuilder $builder, array $options) {
     
            $builder->add('parametres', 'collection', array('label' => 'nom' , 'type' => new ParametreType(), 'allow_add' => true,
                      'allow_delete' => true,
                      'prototype' => true));
        }
     
        public function getDefaultOptions(array $options) {
            return array(
                'data_class' => 'ODM\ReportingBundle\Entity\Chapitre',
                'validation_groups' => array('registration')
            );
        }
     
        public function getName() {
            return 'chapitre';
        }
    }
    Formulaire Parametre avec la collection reponses:
    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
     
    class ParametreType extends AbstractType {
    	public function buildForm(FormBuilder $builder, array $options) {
    		 $builder->add('reponses', 'collection', array('label' => '' ,'type' => new ReponseType(), 'allow_add' => true,
                      'allow_delete' => true,
                      'prototype' => true));
    	}
     
    	public function getDefaultOptions(array $options) {
    		return array(
    			'data_class' => 'ODM\ReportingBundle\Entity\Parametre',
    			'validation_groups' => array('registration')
    			);
    	}
     
    	public function getName() {
    		return 'parametre';
    	}
    }
    Formulaire Reponse avec la réponse (camps valeur) à saisir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class ReponseType extends AbstractType
    {
     	public function buildForm(FormBuilder $builder, array $options) {
     
            $builder->add('valeur');
        }
     
        public function getName() {
            return 'reponse';
        }
    }
    Dans mon template je ne sais pas comment récupérer mes collections "chapitres", "parametres" et acceder à leurs champs afin de construire mon questionnaire.

    A la sauvegarde comment est-ce que j'accède aux valeurs saisie pour la réponse?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class QuestionnaireController extends Controller
    {
        public function questionnaireAction()
        {...}
        public function sauveAction()
        {?????}
    Dans mon controller comment est ce je peux accéder à l'entité "Questionnaire" et ses collections "Chapitres", idem avec les collections "parametres"?

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2004
    Messages : 97
    Points : 89
    Points
    89
    Par défaut
    le lien suivant t'aidera peut-être :
    http://sf.khepin.com/2011/08/inconsi...orm-framework/

Discussions similaires

  1. [2.x] Validation : plusieurs formulaires sur une entité
    Par mvisel dans le forum Symfony
    Réponses: 6
    Dernier message: 06/06/2011, 15h29
  2. [AC-2007] envoi de formulaire pour collecte de données
    Par Alain7751 dans le forum IHM
    Réponses: 1
    Dernier message: 31/07/2009, 14h49
  3. Session Formulaire et Collection
    Par Snyper dans le forum Struts 1
    Réponses: 7
    Dernier message: 05/04/2009, 12h56
  4. [Spring MVC] Problème formulaire avec Collection
    Par arN34 dans le forum Spring Web
    Réponses: 1
    Dernier message: 16/09/2006, 13h17

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