我试图用Symfony为我的应用程序创建测验。 在这一点上,我有3类,Qcm,QcmQuestion和QcmAnswer。 我有多个问题,其中包含多个答案,我想显示答案作为单选按钮。从collectionType呈现单选按钮表单[Symfony]
我只能实现将它们显示为输入。我如何将它们显示为单选按钮?
BaseController.php
$em = $this->getDoctrine()->getManager()>getRepository('QcmBundle:QcmQuestion');
$qcmQuestions = $em->findBy(array('qcm' => $id));
$formBuilderQuestionnaire = $this->createFormBuilder();
$i = 0;
foreach ($qcmQuestions as $qcmQuestion) {
$formBuilder = $this->get('form.factory')->createNamedBuilder($i, FormType::class, $qcmQuestion);
$formBuilder
->add('question')
->add('qcmAnswers', CollectionType::class, [
'entry_type' => QcmAnswerType::class
])
;
$formBuilderQuestionnaire->add($formBuilder);
$i++;
}
$form = $formBuilderQuestionnaire->getForm();
$form->add('save', SubmitType::class, array('label' => 'Envoyer',
"attr" => array("class" => "btn btn-primary")));
return $this->render('QcmBundle:qcm:qcmQuestions.html.twig', ["qcmQuestions" => $qcmQuestions, "form" => $form->createView()]);
QcmAnswerType
class QcmAnswerType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('response');
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'QcmBundle\Entity\QcmAnswer'
));
}
public function getBlockPrefix()
{
return 'qcmbundle_qcmanswer';
}
我想这早些时候,但我结束出现这个错误,我一直无法解决它“传递给选择域的实体必须被管理,也许坚持他们在实体管理器中? – Dayze
如果你不使用实体,但没有管理对象,那么改用'ChoiceType'。 –