Forms Symfony2-集合类型在我的视图中显示两次
我有一个带有集合的表单,当我使用以下语法时,我可以正确地看到它:Forms Symfony2-集合类型在我的视图中显示两次,forms,symfony,Forms,Symfony,我有一个带有集合的表单,当我使用以下语法时,我可以正确地看到它: form_row(form.items) 然后,当我试图自己渲染它时,它是重复的 这是我的小树枝文件中的代码: {{ form_errors(form) }} {{ form_start(form) }} ... some fields here ... <div id="{{ form.items.vars.id }}" class="collection items" data-prototype=
form_row(form.items)
然后,当我试图自己渲染它时,它是重复的
这是我的小树枝文件中的代码:
{{ form_errors(form) }}
{{ form_start(form) }}
... some fields here ...
<div id="{{ form.items.vars.id }}" class="collection items" data-prototype="{{ form_widget(form.items.vars.prototype)|e }}">
<h3>{{ form_label(form.items) }}</h3>
<a href="#" class="add_link">Add</a>
{% for item in form.items %}
{{ form_row(item) }}
{% endfor %}
</div>
... some other fields here ...
{{ form_end(form) }}
下面是我的输出:
<!-- This is the one I need, I removed the prototype for the sake of clarity -->
<div id="bundle_data_items" class="collection items" data-prototype="...">
<h3>
<label class="required">Items</label>
</h3>
<a href="#" class="add_link">Add</a>
</div>
<!-- This one is automatically added. The prototype is empty -->
<div>
<label class="required">Items</label>
<div id="bundle_data_items" data-prototype=""></div>
</div>
项目
项目
你知道为什么会这样吗
我遵循了这一点。我错过什么了吗
编辑:
只有当我的收藏为空时才会发生这种情况不幸的是,我还不能发表评论(没有50个代表),但这可能是由浏览器本身造成的。由于某个地方的标记而导致的渲染问题?查看原始http响应是否具有相同的内容。因为它与form_行(form.items)一起工作,而不是您自己的,所以“可能”是这样的
在输出它之前,我会检查它是否也是空的。当您的集合为空时,
{%for item in form.items%}
中的for
循环永远无法执行,因此表单行(item)
永远不会发生。这意味着,对于Twig/Symfony,您从未实际输出字段
然后在表单末尾执行form\u end
。这通常不是什么大事,但:
除非将render\u rest
设置为false,否则此帮助程序还会输出form\u rest()
因此,您只需为render\u rest
传递一个false
值:
{{ form_end(form, {'render_rest': false}) }}
我不确定form\u widget
是如何解决您的问题的,但我也不确定您是如何尝试该替代方案的-也许您在for
循环之外运行了它
作为一个旁白,您应该考虑创建自己的代码>窗体.html。Tigg < /Cord>模板文件,这样您就可以重用您为集合选择的标记格式。它将允许您简单地执行<代码> FuffyWiGET(…)<代码>,而不必拆分碎片和<代码> FuffEnth将始终考虑该字段将被输出,即使集合是空的。
< P>我找到了解决方案。 结果表明,当集合为空时,它的呈现将永远不会发生。我可以使用sjagr解决方案,但由于有些字段需要自动渲染,我无法使用它 因此,我的解决方案如下:{{ form_errors(form) }}
{{ form_start(form) }}
... some fields here ...
<div id="{{ form.items.vars.id }}" class="collection items" data-prototype="{{ form_widget(form.items.vars.prototype)|e }}">
<h3>{{ form_label(form.items) }}</h3>
<a href="#" class="add_link">Add</a>
{% for item in form.items %}
{{ form_row(item) }}
{% else %}
{% do form.items.setRendered %}
{% endfor %}
</div>
... some other fields here ...
{{ form_end(form) }}
{{form_errors(form)}
{{form_start(form)}}
... 这里有些田地。。。
{{form_标签(form.items)}
{form.items%%中的项的%s}
{{表格_行(项目)}
{%else%}
{%do form.items.setRendered%}
{%endfor%}
... 这里还有其他一些领域。。。
{{form_end(form)}}
那么的内容是什么呢。。。这里的一些字段…
和。。。这里还有一些其他字段…
。。。你是不是无意中在细枝文件中输出了两次?@sjagr我仔细检查了一下,没有其他东西被输出两次。其他字段不是集合,显示为{{form_row(form.comment)}
尝试form_widget
,看看是否有效?它与form_widget
一起工作。问题是呈现的不是我想要的。谢谢你的见解。我不知道form\u end
选项。我记得将来我会制作自己的小部件。@A.D.不用担心,这是我从我的一个项目中为您定制的一个示例。当然,有很多方法可以做到这一点,所以我的格式只是其中之一。谢谢你的例子。这会有帮助的
{{ form_errors(form) }}
{{ form_start(form) }}
... some fields here ...
<div id="{{ form.items.vars.id }}" class="collection items" data-prototype="{{ form_widget(form.items.vars.prototype)|e }}">
<h3>{{ form_label(form.items) }}</h3>
<a href="#" class="add_link">Add</a>
{% for item in form.items %}
{{ form_row(item) }}
{% else %}
{% do form.items.setRendered %}
{% endfor %}
</div>
... some other fields here ...
{{ form_end(form) }}