Php 如何在Symfony2中多次渲染同一表单?
我有一个多推车的模板。车的数量是可变的,没有固定的限制 在每个购物车中,我希望有一个表单,用户可以在其中选择一个国家。如果他提交了表格,则应确定运输成本 现在,我将在twig中实现以下功能:Php 如何在Symfony2中多次渲染同一表单?,php,forms,symfony,Php,Forms,Symfony,我有一个多推车的模板。车的数量是可变的,没有固定的限制 在每个购物车中,我希望有一个表单,用户可以在其中选择一个国家。如果他提交了表格,则应确定运输成本 现在,我将在twig中实现以下功能: {% for cart in carts %} {# Some template stuff #} {{ form_start(form) }} <div class="form-input"> <label for="country" cl
{% for cart in carts %}
{# Some template stuff #}
{{ form_start(form) }}
<div class="form-input">
<label for="country" class="middle-color">Country <span class="active-color">*</span></label>
{{ form_widget(form.country) }}
{{ form_end(form) }}
{% endfor %}
现在的问题是,对于第一个购物车,这个逻辑可以很好地工作,但是对于以后的购物车,没有显示任何表单。如何处理此问题?您应该使用表单类型。这里有一个开始的指南
请注意,在呈现表单小部件后,表单组件会将其标记为已呈现,并且不会再次呈现。我遇到了这一问题以及关于类似问题的另一个问题 总而言之,我没有在控制器中调用窗体上的
createView()
函数,这与将窗体传递给视图时通常的做法不同,而是在细枝视图本身中
例如,在控制器操作中,您确实返回表单对象本身:
return $this->render('AppBundle:Cart:list.html.twig', ['formObject' => $form];
在您的视图中,您可以在每个循环中设置表单:
{% for cart in carts %}
{# Some template stuff #}
{% set form = formObject.createView %}
{{ form_start(form) }}
<div class="form-input">
<label for="country" class="middle-color">Country <span class="active-color">*</span></label>
{{ form_widget(form.country) }}
{{ form_end(form) }}
{% endfor %}
{%用于购物车中的购物车%}
{#一些模板材料}
{%set form=formObject.createView%}
{{form_start(form)}}
国家*
{{form_widget(form.country)}
{{form_end(form)}}
{%endfor%}
我看不出这对我有什么帮助。我根据外部数据创建一个选项列表。我不想多次显示选项列表,但要多次显示整个表单
{% for cart in carts %}
{# Some template stuff #}
{% set form = formObject.createView %}
{{ form_start(form) }}
<div class="form-input">
<label for="country" class="middle-color">Country <span class="active-color">*</span></label>
{{ form_widget(form.country) }}
{{ form_end(form) }}
{% endfor %}