Bonjour,
Voila je rencontre un petit problème avec mon code.
Ce que je fais
Je souhaite afficher mon formulaire de quiz, j'ai su récupérer mes données avec des foreach, mais des que j'essaye de mettre ses données dans mes add du form je récupère que la dernière donnée (de la question et des réponses de la question.
Ici mon controller :
/**
* @Route("/{id}/quiz", name="question_quiz", methods={"GET","POST"})
* @param Questionnaire $questionnaire
* @return Response
*/
public function quiz(Questionnaire $questionnaire,QuestionnaireRepository $questionnaireRepository, Request $request, Reponse $reponse, QuestionRepository $questionRepository, ReponseRepository $reponseRepository): Response
{
$questions =$questionnaire->getQuestions();
$affiche_question = [];
foreach ( $questions as $clef => $question)
{
// dump($question);
$reponses = $reponseRepository->findBy(['question' => $question->getId()]);
// dump($reponses);
$affiche_question =$question->getLibelleQuestion();
dump($affiche_question);
$question_array = [];
foreach ($reponses as $reponse)
{
$question_array[$reponse->getLibelleReponse()]= $reponse->getId();
}
// dump($question_array);
$tab_question[$clef]=$affiche_question;
dump($tab_question);
}
// récupérer les données de $affiche_question et $question_array pour les utiliser dans le form
// pour le moment je récupère que les dernières données du foreach!!!
//Data Class: Créer un formulaire sans classe pour afficher une seule question et ses 4 réponses
$defaultData = ['question' => 'Ici la question'];
$form2 = $this->createFormBuilder($defaultData)
->add('utilisateur', TextType::class, [
'constraints' => [
new NotBlank(),
new Length(['min' => 3]),
],
])
->add('question', ChoiceType::class,[
'choices' => [
$tab_question[0] => $affiche_question,
$tab_question[1] => $affiche_question,
// $affiche_question => $affiche_question,
],
'expanded'=> true,
])
->add('reponse', ChoiceType::class,[
'choices' => [
$question_array,
],
'expanded'=> true,
//Si multiple = false (radio bouton), = true (checkbox)
'multiple'=>true
])
->add('valider', SubmitType::class)
->getForm();
$form2->handleRequest($request);
if ($form2->isSubmitted() && $form2->isValid()) {
//les données sont un tableau "utilisateur" et "reponse"
$data = $form2->getData();
}
return $this->render('question/quiz.html.twig',[
'questionnaire' => $questionnaire,
'form2' => $form2->createView(),
]);
}
l'affichage de mon formulaire
{{ form_start(form2) }}
{{ form_row(form2.utilisateur) }}
{{ form_widget(form2.question) }}
{{ form_widget(form2.reponse) }}
{{ form_widget(form2.valider , {'attr': {'class': 'btn bleu'}}) }}
{{ form_end(form2) }}
Ce que je veux
Du coup j'avais pensé à récupérer les données dans un tableau ou faire une boucle, mais je ne vois pas comment procéder, ou si vous avez d'autres idées ;)