2016-06-26 7 views
0

В Symfony У меня есть эта часть моего кода, где я создаю представление с некоторыми данными и формой с некоторыми переключателями. При отправке формы я делаю дамп в представлении, чтобы проверить, какие данные были отправлены, но данные не совпадают с данными, которые была создана формой. Может кто-нибудь помочь? Благодарю.Форма Symfony отправляет неверные данные

public function playAction(Request $request){ 
    $data = $this->getDbQuestion(); 
    $questionData = $data[0]; 
    dump($questionData); 
    $answerData = $data[1]; 
    dump($answerData); 

    $form = $this->createFormBuilder($answerData) 
    ->add('answers', ChoiceType::class, 
     array(
      'choices'=> $answerData, 
      'multiple'=>false,'expanded'=>true, 
      'choice_label' => 'answer', 
    )) 
    ->add('Submit',SubmitType::class, array('label' => 'Send Answer')) 
    ->getForm(); 

    $form->handleRequest($request); 
    if($form->isSubmitted()) { 
     $formData = $form->getData(); 
     return $this->render('QuizViews/correctAnswer.html.twig', array(
       'ss' => $formData 
     )); 
    } 
    return $this->render('QuizViews/playQuiz.html.twig', array(
     'form' => $form->createView(), 
     'question' => $questionData 
    )); 
} 

Twig

<a href="/quiz/question"> 
    <input type="button" value="Start Quiz" /> 
</a> 
<br> 
FormData Correct {{ dump(ss) }} 

Form data

Submitted form Data

ответ

0

Поговорив, это может быть лучшим решением для секции ответов:

->add('answers', EntityType::class, array(
    'class' => 'AppBundle:Answer', 
    'query_builder' => function (EntityRepository $er) { 
     return $er->createQueryBuilder('a') 
       ->where('a.question_id->getId() = :qID') 
       ->setParameter('qID', 1); 
    }, 
    'multiple'=>false, 
    'expanded'=>true, 
    'choice_label' => 'answer', 
)) 

Попробуй!

1

Ваш звонок, чтобы получить данные после проверки формы isSubmitted неверен. Вам необходимо позвонить следующим образом:

$formData = $form->get('answers')->getData(); 

Это только что дает «ответы».

Edit # 2 Вы также можете захотеть изменить это:

->add('answers', ChoiceType::class, 
    array(
     'choices'=> $answerData, 
     'multiple'=>false, 
     'expanded'=>true, 
     'choice_label' => 'answer', 
     'choice_value' => $answerData, 
)) 

который устанавливает 'choice_value', что на самом деле выбран и возвращенное GetData().

Можете ли вы разместить свой файл ответов на twig, пожалуйста? Отредактируйте свой пост, и я вижу.

+0

Да, вы правы. Это похоже на мой второй снимок экрана «Ответы» => Ответ. Но данные по-прежнему неверны. – Otonel

+0

Ответ, который вы видите, это «rasp11, rasp22, rasp33, rasp44», но вы ожидаете «rasp111, rasp222, rasp333, rasp444»? –

+0

да что-то в этом роде. Как на скриншотах выше, когда я выбираю «rasp22», я получаю на мой взгляд «rasp222» или «rasp2» или «rasp2222». Это все ответы на другие вопросы. – Otonel

Смежные вопросы