Dans mon Twig, j'essaie d'afficher pour chaque réponse ses questions de cette façon (QuizzForm étant le formulaire créé au dessus que je renvoie par mon Controller,questions est un tableau de Questions de la BDD, pareil pourchoices) :
{{ form_start(QuizzForm) }}
{% for question in questions %}
{{ question.labelQuestion }}
{% for choice in choices %}
{{ form_row(QuizzForm.choices) }}
{% endfor %}
{% endfor %}
{{ form_end(QuizzForm) }}
Voici enfin mon Controller qui s'occupe de renvoyer chaque Choix disponibles pour la Question :
public function showQuizz(EntityManagerInterface $em)
{
$idQuizz = 1; //ici je mets en dur l'id du Quizz car je n'ai pas encore fait ma selection
$quizz = $em->getRepository(Quizz::class)->find($idQuizz);
$questions = $quizz->getQuestion(); // Je récupère toutes les questions liées avec le Quizz
$choices = null;
$tableauDeQuestion = null;
foreach ($questions as $question)
{
echo('<p>'.$question->getLabelQuestion().'</p>');
$choices = $em->getRepository(Choice::class)->selectByIdQuestion($question->getId());
foreach ($choices as $choice)
{
echo($choice->getLabelChoice());
}
}
$quizzForm = $this->createForm(QuizzResponseType::class, $newAnswer);
return $this->render('show_quizz/index.html.twig', [
"QuizzForm"=>$quizzForm->createView(),
"questions"=>$questions,
"choices"=> $choices,
]);
}
La fonction selectByIdQuestion() me renvoie tous les choix relatifs à l'id de la Question.
J'ai mis des echo pour voir le déroulé de ce que je récupère, et avec les echo, j'ai bien le bon affichage soit question/réponse-question/réponse etc. Mais dès que je passe sur mon Twig, j'ai juste pour chaque Question toutes les réponses disponibles en BDD.... C'est bien joli mais pas trop ce que je voudrais Surtout que du coup, vu que j'ai une liste de RadioButton, je ne peux choisir qu'une réponse dans tout ça.
Du coup, comment réaliser ce que je souhaite ? Dois-je abandonner l'idée d'utiliser le FormType de Symfony ? Est-ce simplement un mauvais passage d'informations ?
Merci d'avance
EDIT : J'ai peut-être une piste :
public function buildForm(FormBuilderInterface $builder, array $options)
{
$idQuestion = $options['idQuestion'];
$builder
->add('choices', EntityType::class, array
(
'label'=> 'question.labelQuestion',
'class'=>Question::class,
'choice_label'=>'choice.labelChoice',
'choice_value'=>'choice.id',
'query_builder'=> function(ChoiceRepository $cr) use ($idQuestion)
{
return $cr->selectByIdQuestion($idQuestion);
},
'expanded'=>true
)
)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => UserQuestionChoices::class,
]);
$resolver->setRequired(['idQuestion']);
}
As tu tenté d'appliquer ta fonction selectByIdQuestion() dans ton contrôlleur plutôt que dans ton Repository afin de boucler sur tes question et les Set() en fonction de leur ID ?
[Symfony] Réalisation d'un quizz, FormType
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.