Forms 如何为一个实体CollectionType使用不同的输入类型-Symfony 3

Forms 如何为一个实体CollectionType使用不同的输入类型-Symfony 3,forms,symfony,collections,types,field,Forms,Symfony,Collections,Types,Field,在Symfony 3.2.4和PHP 5.6.28中 我正在制作一套专门的调查系统。 我有3个问题/答案/调查 调查类型基于两个集合类型:一个包含问题,另一个包含答案 调查类型: 如果我只需要文本或数字作为答案,那么到目前为止一切都正常 问题是我需要不同的回答输入类型:复选框、范围、文本。。。对于每个问题 我需要的“答案字段类型”存储在DB表问题中 在控制器中生成表单时,我只能有一种输入类型 $form = $this->createForm(SurveyType::class, $s

在Symfony 3.2.4和PHP 5.6.28中

我正在制作一套专门的调查系统。 我有3个问题/答案/调查

调查类型基于两个集合类型:一个包含问题,另一个包含答案

调查类型:

如果我只需要文本或数字作为答案,那么到目前为止一切都正常

问题是我需要不同的回答输入类型:复选框、范围、文本。。。对于每个问题

我需要的“答案字段类型”存储在DB表问题中

在控制器中生成表单时,我只能有一种输入类型

 $form = $this->createForm(SurveyType::class, $survey, array(
        'question_type' => 'range'
    ));
例如,我所有的答案只能是范围或文本。我无法混合答案输入类型。


是否有一种说法:“对于问题(1)我希望我的答案是字符串,但问题(2)我希望答案是范围”,并且它们都是同一个调查表的一部分?

您可以根据所需的答案类型动态构建表格。请参见文档页面。您必须在event subscriber类中添加一些逻辑,才能返回正确类型的输入。

您确定这样做有效吗?你试过多个问题/答案吗?在我看来,这将呈现一组问题,然后呈现一组答案。似乎您应该使用单个问答组合构建一个表单,然后呈现这些表单的集合。然后,每个表单都可以实现我在下面建议的解决方案,使用一个表单事件订阅者来呈现正确输入类型的问题/答案组合。我只需要在视图中有一个表单(一次调查)。这就是为什么我有两个集合类型:答案和问题。我使用的是特定的js和css,无法处理多个调查。
 $form = $this->createForm(SurveyType::class, $survey, array(
        'question_type' => 'range'
    ));