В Symfony я создаю форму с четырьмя возможными вариантами выбора в качестве переключателей. Когда пользователь отправляет форму с выбором, я беру отправленные данные формы (выбор пользователя) и отображаю их в twig. Проблема в том, что иногда данные отправленной формы являются нулевыми, даже если пользователь выбрал радио, а иногда выбранный выбор передается и отображается в twig. Также иногда после получения null в twig и обновления страницы данные отображаются, но это не всегда происходит. Почему это несоответствие? Как я могу это решить? Спасибо
public function playAction(Request $request){
$data = $this->getDbQuestion();
$questionData = $data[0];
$questionID = $questionData->getId();
dump($questionData);
$answerData = $data[1];
dump($answerData);
$form = $this->createFormBuilder($answerData)
->add('answers', EntityType::class, array(
'class' => 'QuizBundle:Answer',
'query_builder' => function (EntityRepository $er) use ($questionID) {
return $er->createQueryBuilder('a')
->where('a.question = :qID')
->setParameter('qID', $questionID);
},
'multiple'=>false,
'expanded'=>true,
'error_bubbling' => true,
'choice_label' => 'answer',
))
->add('Submit',SubmitType::class, array('label' => 'Send Answer'))
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$formData = $form->get('answers')->getData();
$errors = $form->getErrors();
return $this->render('QuizViews/correctAnswer.html.twig', array('ss' => $formData, 'errors' => $errors ));
}
return $this->render('QuizViews/playQuiz.html.twig', array('form' => $form->createView(),'question' => $questionData));
}
Сброс отправленных данных формы в ветке
<a href="/quiz/question">
<input type="button" value="Start Quiz" />
</a>
<br>
FormData Correct {{ dump(ss) }}
Form Errors {{ dump(errors) }}
Добавление
$form->isValid()
Я получаю это в ветке, когда ответ не отправлен.
php bin/console doctrine:generate:entities AppBundle/Entity/Answer
??? Это автоматически создает их, затем вы можете открыть Answers.php, чтобы увидеть, какие изменения были внесены. Он сохраняет резервную копию файла Answers.php~. 28.06.2016{{ ss.getAnswer }}
, потому что вы передаете объектss
в файл ветки в массиве. В качестве альтернативы вы можете передать ответ в массиве так:array('ss' => $formData, 'answer' => $formData->getAnswer())
, а затем в своей ветке вы можете распечатать его так:{{ answer }}
. 28.06.2016