繁体   English   中英

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

[英]Symfony forms Link radiobuttons over CollectionType

我有一个实体问题和一个实体答案。 答案指的是一个问题,并具有一个字段“ 正确” (这是布尔值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',
        ]);
}

它只有2个表单元素,答案的输入字段和指示答案是对还是错的单选按钮。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM