Formulaire Symfony

Default
,

Bonjour,

Voila je rencontre un petit problème avec mon code, j'essaie de créer un QCM à choix unique sur symfony 3 et j'aimerais générer pour chaque question 3 bouton radio (vrai, faux et ne sais pas) mais au moment de créer ma boucle pour afficher mes questions et mes boutons radio il m'affiche bien la totalité de mes questons dans un tableau mais seulement les 3 boutons radio pour la première question....

$builder 
    ->add('vrai', RadioType::class, array('value' => 1, 'label' => false))
    ->add('faux', RadioType::class, array('value' => 0, 'label' => false))
    ->add('ne_sais_pas', RadioType::class, array('value' => 2, 'label' => false));

Etant nouveau sur symfony, je n'arrive pas a trouvé comment mettre 3 boutons radio pour chaque question....
Si quelqu'un peut m'aider :) merci beaucoup !!

5 Réponse

134298
, Il a répondu à ma question !

Bonjour Sylvain,

Je ne pense pas qu'utiliser le RadioType est la meilleure des solutions.
Si j'ai bien compris ce que tu veux faire, il faut plus que tu utilises le ChoiceTypeField.

Il faut aussi savoir que ->add() est équivalent à une ligne de ton formulaire. Dans le cas ci-dessus, tu à mis 3 lignes tu auras donc 3 boutons avec un seul choix possible.

Pour créer tes boutons radio il te suffira de faire comme ça :

->add('testRadio',ChoiceType::class,array(
                'choices'  => array(
                    'Vrai' => 1,
                    'Faux' => 0,
                    'Ne sais pas' => 2,
                ),
                'expanded' => true,
                'multiple' => false
            ))
Default
, Il a répondu à ma question !

Merci beaucoup d'avoir prit le temps de me repondre :), c'est deja un problème de réglé !

Mais mon deuxième problème est que j'ai besoin davoir 3 bouton radio par question mais j'ai n question, mon nombre de question peut varier ... et c'est la mon 2ème problème, comment generer n choicetype.

134298
, Il a répondu à ma question !

Si tu veux rajouter une question avec 4 voix par exemple il te suffit de faire la même opération en rajoutant cela

->add('testRadio',ChoiceType::class,array(
                'choices'  => array(
                    'Vrai' => 1,
                    'Faux' => 0,
                    'Ne sais pas' => 2,
                    'Choix 4' => 4,
                    'Choix N' => 'N'
                ),
                'expanded' => true,
                'multiple' => false
            ))
Default
, Il a répondu à ma question !

Non non ^^ je veux bien que 3 Choicetype par question mais j'ai 25 questions donc il me faudrait 3 x 25 choicetype

134298
, Il a répondu à ma question !

Il faut que tu appelles plusieurs fois le ->add comme ceci :

->add('question1',ChoiceType::class,array(
                'choices'  => array(
                    'Vrai' => 1,
                    'Faux' => 0,
                    'Ne sais pas' => 2,
                ),
                'expanded' => true,
                'multiple' => false
            ))
->add('question2',ChoiceType::class,array(
                'choices'  => array(
                    'Vrai' => 1,
                    'Faux' => 0,
                    'Ne sais pas' => 2,
                ),
                'expanded' => true,
                'multiple' => false
            ))
->add('question3',ChoiceType::class,array(
                'choices'  => array(
                    'Vrai' => 1,
                    'Faux' => 0,
                    'Ne sais pas' => 2,
                ),
                'expanded' => true,
                'multiple' => false
            ))

Etc jusqu'au nombre de question que tu as ;)