我想在不同的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 %}
任何帮助?
答案 0 :(得分:0)
这是什么目的?
是的,您可以尝试,但如果您要添加一些字段,您的表格将不会对此进行验证。
如果你想这样做,请检查字段表单上的setRendered(渲染后设置为false,再次重新渲染)
答案 1 :(得分:0)
每个表单都应该是唯一的,因为例如Symfony为表单元素生成id,因此单个表单渲染几次会产生重复的id。要命名您的表单,您应该使用表单工厂中的createNamed
或createNamedBuilder
。
$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);
}