Forms 在Twig中,如何在保持“添加/删除”工作的同时在表单元素的行中设置格式?

Forms 在Twig中,如何在保持“添加/删除”工作的同时在表单元素的行中设置格式?,forms,symfony,indexing,twig,Forms,Symfony,Indexing,Twig,在一个Symfony项目中,使用Twig作为模板,我想知道如何控制一组表单元素中子字段的呈现,同时仍然利用Symfony的“扩展和收缩”功能 由于业务需求,某些元素必须作为一个集合保存在一起,每行有多个输入,用户可以根据需要添加或删除行 实体对象包含: protected $jobInfo = array(array("jobType" => "", "shift" => "")); 表单对象包含: public function buildForm(FormBuilderInte

在一个Symfony项目中,使用Twig作为模板,我想知道如何控制一组表单元素中子字段的呈现,同时仍然利用Symfony的“扩展和收缩”功能

由于业务需求,某些元素必须作为一个集合保存在一起,每行有多个输入,用户可以根据需要添加或删除行

实体对象包含:

protected $jobInfo = array(array("jobType" => "", "shift" => ""));
表单对象包含:

public function buildForm(FormBuilderInterface $fb, array $options)
{
    //...
    $fb->add('jobInfo', CollectionType::class, array(
        'required' => false,
        'entry_type' => JobSetType::class,
        // ...
        'label' => "bla bla"));
子表单
JobSetType
只包含两个带有
ChoiceType::class
的输入。现在,如果我在twig文件中设置如下模板:

{# ... #}
<tr><th>
    {{ form_label(form.jobInfo) }}
</th><td>
    {{ form_widget(form.jobInfo) }}
    {{ form_errors(form.jobInfo) }}
</td></tr>
{# ... #}


每一个都有语法错误。我的新理论,翻转列和行

解决了我自己的问题。它只需要在细枝上做一个for循环:

        <table>
        <tr><th>
            {{ form_label(form.jobInfo.0.jobType) }}
        </th><th>
            {{ form_label(form.jobInfo.0.shift) }}
        </th></tr>
        {% for x in form.jobInfo %}
            <tr><td>
                {{ form_widget(x.jobType) }}
                {{ form_errors(x.jobType) }}
            </td><td>
                {{ form_widget(x.shift) }}
                {{ form_errors(x.shift) }}
            </td></tr>
        {% endfor %}
        </table>

{{form_标签(form.jobInfo.0.jobType)}
{{form_标签(form.jobInfo.0.shift)}
{x在form.jobInfo%}
{{form_小部件(x.jobType)}
{{form_errors(x.jobType)}}
{{form_widget(x.shift)}
{{form_errors(x.shift)}}
{%endfor%}
您应该阅读以下内容。您可以在每个视图的基础上应用它们,而不必更改全局表单主题。我只是想知道。。。我认为您可以循环使用
jobInfo
,并使用来呈现小部件和错误。
form_widget(form.jobInfo.{{ loop.index0 }}.shift)
form_widget(form.jobInfo.{{ loop.index }}.shift)
        <table>
        <tr><th>
            {{ form_label(form.jobInfo.0.jobType) }}
        </th><th>
            {{ form_label(form.jobInfo.0.shift) }}
        </th></tr>
        {% for x in form.jobInfo %}
            <tr><td>
                {{ form_widget(x.jobType) }}
                {{ form_errors(x.jobType) }}
            </td><td>
                {{ form_widget(x.shift) }}
                {{ form_errors(x.shift) }}
            </td></tr>
        {% endfor %}
        </table>