我对此问题有一个扩展:How to deal with Form Collection on Symfony2 Beta? - 我的项目类似,但对象嵌套得更深。我有文章有一个或多个内容元素,每个内容元素包含一个或多个媒体。到目前为止,模型和控制器工作正常,但我不知道如何在我的模板中正确表示嵌套。 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
))
;
}
到目前为止,用于创建(或编辑)文章的表单模板看起来像这样(几乎是vanilla自动生成的模板):
...
<form action="{{ path('article_create') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
{% for content in form.contents %}
{{ form_widget(content) }}
{% endfor %}
<p>
<button type="submit">Create</button>
</p>
</form>
...
如何访问每个内容的媒体,以便它们正确关联?
答案 0 :(得分:2)
遍历所有内容的媒体:
<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>
答案 1 :(得分:-1)
<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>