【发布时间】:2017-03-15 15:55:29
【问题描述】:
在 Symfony 3.2.4 和 PHP 5.6.28 中
我正在一个专用捆绑包中制作一个调查系统。 我有 3 个实体问题/答案/调查
SurveyType 基于 2 个 CollectionType:一个包含问题,另一个包含答案。
调查类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'question',
CollectionType::class,
array(
'entry_type' => QuestionType::class)
)
->add(
'answer',
CollectionType::class,
array(
'entry_type' => AnswerType::class,
)
);
如果我只需要文本或数字作为答案,到目前为止一切正常。
问题是我需要不同“答案输入类型”:复选框,范围,文本......每个问题。
我需要的“答案字段类型”存储在数据库表问题中。
在控制器中生成表单时,我只能有一种输入类型。
$form = $this->createForm(SurveyType::class, $survey, array(
'question_type' => 'range'
));
例如,我所有的答案只能是范围或文本。我无法混合答案输入类型。
Only Range
有没有办法说:“对于问题 (1) 我希望我的答案是一个字符串,但问题 (2) 我想要一个范围”并且它们都是同一个 SurveyForm 的一部分?
【问题讨论】:
-
你确定这行得通吗?您是否尝试过多个问题/答案?在我看来,这将呈现一组问题,然后呈现一组答案。看来您应该使用单个问题和答案组合构建一个表单,然后呈现这些单个表单的集合。然后,单个表单可以使用表单事件订阅者来实现我在下面建议的解决方案,以呈现正确输入类型的问题/答案组合。
-
我的视图中只需要一张表格(一份调查)。这就是为什么我有 2 个 collectionType :用于答案和问题。我正在使用无法用于多项调查的特定 js 和 css。
标签: forms symfony collections types field