Symfony 3.4 CollectionType编辑表单

时间:2018-12-03 16:12:04

标签: forms symfony loops symfony-3.4

我得到了一个包含八个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),我尝试将值传递为dataplaceholder,但是我没有数据,只有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' => ''],

        ])
[..]

如果我想念东西,请问我。

0 个答案:

没有答案