2015-12-01 107 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':'我的自定义名称}}}} 再次感谢:) –