Symfony表单通过CollectionType链接单选按钮

时间:2018-06-21 14:58:23

标签: php symfony symfony-forms symfony-3.4

我有一个实体问题和一个实体答案。答案指的是一个问题,并且有一个字段 Correct (这只是布尔值true / false)。每个问题有4个答案,在这4个答案中,有1个是正确的。

现在,我正在实现一个后端表单,可以在其中添加或编辑问题。我使用Symfony表单执行此操作。我的表单类型生成器如下所示:

QuestionType.php

public function buildForm(FormBuilderInterface $builder, array $options): void
{
     $builder
        ->add('description', TextareaType::class, [
            'label' => 'admin.question.form.description',
            'required' => false,
        ])
        ->add('question', TextType::class, [
            'label' => 'admin.question.form.question',
        ])
        ->add('answers', CollectionType::class,[
            'label' => 'admin.question.form.answers.answers',
            'entry_type' => AnswerType::class,
        ]);
}

所以我使用的是答案的集合,总共是4个。该集合正在创建AnswerType表单。

AnswerType.php

public function buildForm(FormBuilderInterface $builder, array $options): void
{
    $builder
        ->add('answer', TextType::class, [
            'label' => 'admin.question.form.answers.answer',
        ])
        ->add('correct', RadioType::class,[
            'label' => 'admin.question.form.answers.correct',
        ]);
}

仅有两个表单元素,一个答案的输入字段和一个单选按钮,用于指示答案是对还是错。

我想渲染这4个答案字段,每个答案字段的末尾都带有一个单选按钮以指示正确的答案。不幸的是,那些单选按钮没有链接,并且每个都属于它自己的集合。每个单选按钮都是可选的,因此每个答案都可以选择为正确的。这似乎合乎逻辑,因为无法告诉Symfony将它们分组。

每个人都有自己的名字,并且彼此之间不属于彼此。这些复选框如何链接,或者解决该问题的更好方法是什么?

2 个答案:

答案 0 :(得分:0)

在相同的问题中为单选按钮设置相同的CSS类名称,并在用户通过JS单击单选按钮时实施检查/取消选中逻辑。

答案 1 :(得分:0)

我认为您做的事情不正确,请检查此solution,我认为这更好。