你不能循環那樣的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