你不能循环那样的form_row。表格行只能呈现一次。如果您尝试为每个PostReply多次创建相同的表单并将它们呈现在循环中 - 它将不会再工作,因为您将获得相同的ID和字段名称。
我假设你有帖子的集合,并且你想在时间线样式中显示他们,在每个帖子旁边都有回复字段。为了达到这个目的,我建议你创建PostReply实体和PostReplyType(表单类型)。正如我前面所说,你必须使用动态名称生成。
这应该给你一个想法在哪个方向,你应该去:
class Post
{
private $id;
private $title;
}
class PostReply
{
private $id;
private $postId;
private $message;
}
class PostReplyType extends AbstractType
{
private $name = 'reply_form';
public function setName($name){
$this->name = $name;
}
// builder and other required code
}
然后你就可以做这样的事情在你的控制器:
$posts = $postsRepository->findAll();
$postReplyForms = new ArrayCollection();
foreach($posts as $post) {
$postReply = new PostReply();
$postReplyType = new PostReplyType();
$postReplyType->setName('reply_form_' . $post->getId());
$form = $this->createForm($postReplyType, $postReply);
$postReplyForms->add($form);
}
在树枝:
{% for form in postReplyForms %}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
{% endfor %}
这应该呈现具有动态ID和名称的表格:
<form>
<input type="text" id="reply_form_1_field" name="reply_form_1[field]"/>
</form>
<form>
<input type="text" id="reply_form_2_field" name="reply_form_2[field]"/>
</form>
Symfony2窗体是框架的非常复杂的部分,我建议从文档开始,以便对SF2窗体的工作方式有基本的了解。然后搜索更多用例。祝你好运。
http://symfony.com/doc/current/book/forms.html
只能呈现场一次......你说的是对采集的嵌入式形式? http://symfony.com/doc/current/cookbook/form/form_collections.html – pbenard