我得到了一个包含八个CollectionType的表单,即simpleArray。
我应该制作一个页面来编辑实体并使用表格输入呈现表格。
这就是我所做的
{% for items in form.floor.vars.value %}
<tr>
<td></td>
<td>
{{ form_widget(form.floor, ['data',form.floor.vars.value[i]]) }}
</td>
<td>
{{ form_widget(form.ambient, ['placeholder', form.ambient.vars.value[i]]) }}
</td>
<td style="min-width:270px;">
{{ form_widget(form.name) }}
</td>
<td style="min-width:150px;">
{{ form_widget(form.pp, ['data', form.pp.vars.value[i]]) }}
</td>
<td style="min-width:150px;">
{{ form_widget(form.pl) }}
</td>
<td style="min-width:150px;">
{{ form_widget(form.pt) }}
</td>
<td style="min-width:150px;">
{{ form_widget(form.c1v) }}
</td>
<td style="min-width:150px;">
{{ form_widget(form.c2v) }}
</td>
</tr>
{% endfor %}
这将渲染单个<td>
,其中包含所有表单输入,我应该为数组中的每个项目渲染一个<td>
块(实体中的值的格式为1,4,2,6,8,4
,每个值都有相同数量的值,所以我使用的是在for循环中获得值的第一项。
我遇到的另一个问题是ambient
字段是一个下拉列表(里面有EntityType的CollectionType),我尝试将值传递为data
或placeholder
,但是我没有数据,只有EntityType给出的列表中的第一项。
$expertations = $this->getDoctrine()->getRepository(Expertations::class)->find($id);
[..]
->add('ambient', CollectionType::class, [
'entry_type' => EntityType::class,
'entry_options' => [
'class' => 'AppBundle:Rooms',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.name')->distinct()
;},
'label' => false,
'choice_label' => 'name',
'choice_value' => 'id',
],
'label' => false,
'attr' => ['class' => ''],
])
[..]
如果我想念东西,请问我。