Symfony表单生成器单选按钮

时间:2016-06-05 22:47:29

标签: php symfony

我正在使用Symfony 3框架,我需要创建一个表单来显示测验问题,图像和四个可能的答案作为单选按钮。 到目前为止,我已经创建了从我的数据库映射到我的实体字段但是有单选按钮问题的字段id,问题和图像。贝娄是我迄今为止所拥有的。

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
    $builder
        ->add('id',HiddenType::class)
        ->add('image',TextType::class)
        ->add('question',TextType::class)
        ->add('Options to choose',ChoiceType::class,
                array('choices' => array(
                        'answer1' => '1',
                        'answer2' => '2',
                        'answer3' => '3',
                        'answer4' => '4'),
                'choices_as_values' => true,'multiple'=>false,'expanded'=>true))
        ->add('Submit',SubmitType::class);
}

我的问题如下:

- > add('选项选项'我不能拥有它,因为Symfony正在尝试在我的实体类中查找方法。 下面也是'answer1'=> '1'没有从数据库中获取数据。如何从数据库中提取数据并为每个单选按钮显示数据。 如何解决此问题,并有4个单选按钮显示4个数据库选项。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

到目前为止,您所做的事情看起来更像是一个可以创建问题的表单。

使用实体字段和选项选项:

$builder->add('answer', EntityType::class, array(
'class' => 'AppBundle:Answer',
'choices' => $question->getAnswers(),

));

您的目标是构建一个包含一个问题及其答案的表单。你能告诉我们你的实体吗?测验,问答我猜。

答案 1 :(得分:0)

您可以映射您的"选项以选择"为假

$builder->add('Options to chose', ChoiceType::class, array( 'choices' => array( 'm' => 'Male', 'f' => 'Female' ), 'mapped' => false, ));

然后做一些商业逻辑来获得答案并将答案保存在字段中。但我真的不建议采用这种方法。

如果您正在学习Symfony,请查看Databases and Doctrine documentation,您需要通过实体处理答案,甚至是测验本身,并创建它们之间的关系。然后学习如何在表单中使用它们。它将更加简单和动态!

class Question
{
    /**
    * @ORM\OneToMany(targetEntity="Answer", mappedBy="question")
    */
    private $answers;
}

class Answer
{
    /**
    * @ORM\ManyToOne(targetEntity="Question", inversedBy="answers")
    */
    private $question;
}