多次渲染form_widget

时间:2016-05-13 13:27:15

标签: symfony twig

我想在不同的div中多次渲染一个form_widget,但总是渲染一次,我也尝试使用form_widget提交表单但是我得到了csrf错误

{% for pub in pub %}
{% for publisher in publisher %}
{% if ( pub.publisher is same as  ( publisher  ) ) %}
<div class="box-footer">
<form action="{{ path('commentaire_create',{ "id": pub.id}) }}" {{ 

form_enctype(formpub) }} method="POST" >
    <img class="img-responsive img-circle img-sm" src="dist/img/user4-128x128.jpg" alt="alt text">
    <div class="img-push">

{{ form_widget(formcom.statu,{'attr': {'class': 'form-control input-sm','placeholder': "Votre commentaire ...",'id':pub.id ,'name':pub.id }})}}
{{ form_rest(formcom) }}
<!-- <input type="text" class="form-control input-sm" placeholder="Press enter to post comment">-->
</div>
</form>
</div>
</div>
 </div>
 {% endif %}                                        
{% endfor %}
  {% endfor %}

任何帮助?

2 个答案:

答案 0 :(得分:0)

这是什么目的?

是的,您可以尝试,但如果您要添加一些字段,您的表格将不会对此进行验证。

如果你想这样做,请检查字段表单上的setRendered(渲染后设置为false,再次重新渲染)

答案 1 :(得分:0)

每个表单都应该是唯一的,因为例如Symfony为表单元素生成id,因此单个表单渲染几次会产生重复的id。要命名您的表单,您应该使用表单工厂中的createNamedcreateNamedBuilder

如果您使用表单构建器创建表单:

$forms = array();
foreach ($pubs as $pub) {
    $id = $pub->getId();

    $forms[$id] = $this->container->get('form.factory')->createNamedBuilder("pub-{$id}", 'Symfony\Component\Form\Extension\Core\Type\FormType', $pub)
        ->add('comment', TextType::class)
        ->add('save', SubmitType::class, array('label' => 'Save'))
        ->getForm();
}

如果使用表单类型

创建表单
$forms = array();
foreach ($pubs as $pub) {
    $id = $pub->getId();
    $forms[$id] = $this->container->get('form.factory')->createNamed("pub-{$id}", new PubType(), $pub);
}