Forms 如何在Symfony 2.0中处理多个嵌套表单集合?

Forms 如何在Symfony 2.0中处理多个嵌套表单集合?,forms,collections,symfony,one-to-many,Forms,Collections,Symfony,One To Many,我对这个问题进行了扩展:-我的项目类似,但对象嵌套得更深。我有一些文章有一个或多个内容元素,每个元素都包含一个或多个媒体。到目前为止,模型和控制器运行良好,但我不知道如何在模板中正确表示嵌套。 Form/ContentType.php看起来没问题: class ContentType extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $b

我对这个问题进行了扩展:-我的项目类似,但对象嵌套得更深。我有一些文章有一个或多个内容元素,每个元素都包含一个或多个媒体。到目前为止,模型和控制器运行良好,但我不知道如何在模板中正确表示嵌套。 Form/ContentType.php看起来没问题:

class ContentType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('headline')
            ->add('text')
            ->add('medias', 'collection', array(
              'type'      => new MediaType(),
              'allow_add' => true
            ))
        ;
    }
到目前为止,用于创建(或编辑)文章的表单模板如下所示(几乎是自动生成的模板):

。。。
{{form_widget(form)}
{%用于form.contents%中的内容}
{{form_widget(content)}
{%endfor%}

创造

...

如何访问每个内容的媒体以使它们正确关联?

遍历所有内容的媒体:

<form action="{{ path('article_create') }}" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}

    {% for content in form.contents %}
        {% for media in content.medias %}
            {{ form_widget(media) }}
        {% endfor %}
    {% endfor %}

    <p>
        <button type="submit">Create</button>
    </p>
</form>

{{form_widget(form)}
{%用于form.contents%中的内容}
{content.medias%中的媒体为%s}
{{form_widget(媒体)}
{%endfor%}
{%endfor%}

创造


{form.contents.medias.children%%中的媒体为%
{{form_widget(媒体)}
{%endfor%}
{{form_rest(form)}

创造


谢谢您的回复!事实上,我已经去过了,但我不完全清楚如何使用生成的表单字段原型干净、动态地添加或删除内容元素和媒体。到目前为止,我的解决方案是添加n个空内容元素,每个元素包含m个空媒体元素。这限制了我可以添加的内容和媒体的数量。我宁愿使用内置原型来动态添加内容元素,但我不知道如何动态添加相关媒体。是否要在代码中添加一些注释,以便更清晰易懂?
<form action="{{ path('article_create') }}" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}

    {% for content in form.contents %}
        {% for media in content.medias %}
            {{ form_widget(media) }}
        {% endfor %}
    {% endfor %}

    <p>
        <button type="submit">Create</button>
    </p>
</form>
<form action="{{ path('article_create') }}" method="post" {{ form_enctype(form) }}>
    {% for media in form.contents.medias.children %}
         {{ form_widget(media) }}
    {% endfor %}
    {{ form_rest(form) }}
    <p>
        <button type="submit">Create</button>
    </p>
</form>