Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Symfony2中多次渲染同一表单?_Php_Forms_Symfony - Fatal编程技术网

Php 如何在Symfony2中多次渲染同一表单?

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

我有一个多推车的模板。车的数量是可变的,没有固定的限制

在每个购物车中,我希望有一个表单,用户可以在其中选择一个国家。如果他提交了表格,则应确定运输成本

现在,我将在twig中实现以下功能:

{% 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 %}