2015-12-01 155 views
0

不循環form_row我要循環一Form_row在SF2 /嫩枝:可在樹枝

驗證碼:

{% for post in posts %} 
      {{ form_row(formreply.body) }} 
{% endfor %} 

我有一個時間表如何contient許多職位,但告訴我只有表對時間軸,在第一狀態,

UPDATE:

的問題是不是在帖子環::

的其他例子:

{% for i in 0..10 %} 
    {{ form_row(formreply.body) }} 
{% endfor %} 

應該告訴我Form_Row十幾倍,對不對?

這表明對我來說只有一次..

筆記「我已經回到了formreply在控制器」

+2

只能呈現場一次......你說的是對採集的嵌入式形式? http://symfony.com/doc/current/cookbook/form/form_collections.html – pbenard

回答

1

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

+0

這是我想要的,謝謝兄弟:) –

+0

只是問題:我可以添加這個attr直接在樹枝上,我的意思是這樣的: { {form_widget(formreply.body,{'name':'我的自定義名稱}}}} 再次感謝:) –