由于使用了parent()和块结构,Twig在我调用form_row()之前输出Symfony表单元素



我有两个分支文件——indexlayout。我正在尝试用index输出一个表单。

由于这个网站的模板结构方式,我不得不将表单包装在布局的最外面,如下所示。

这是模板文件:

{# layout.html.twig: #}
{% block main %}
<!-- 
there is actually a lot more going on here 
and simply moving it into index would lead 
to a lot of duplication in the html structure
-->
<main> 
{% block mainContent %}
{% endblock %}
</main>
{% endblock %}

这是实现模板的文件:

{# index.html.twig: #}
{% extends 'layout.html.twig' %}
{% block main %}
{{ form(form) }}
{{ parent() }}  
{{ form_end(form) }}
{% endblock %}
{% block mainContent %}
{{ form_row(form.my_field) }}
{% endblock %}

index覆盖main块,添加表单,然后将主父内容调用到表单中。父内容包含一个名为mainContent的块,然后我将表单元素实际添加到该块中。

唯一的问题是Symfony/Twig有其他想法,并且实际上在blockMain之前输出了我的所有行,所以我在其中对form_row的调用被忽略了,因为相应的元素已经得到了响应。

我如何停止它并在blockMain中输出我的表单,但将其包裹在blockMain中?

如果这是重复的,我很抱歉——我正在努力寻找合适的关键词。虽然我能看到发生了什么,但我实际上不知道这种行为叫什么。

事实证明,这比我想象的要复杂得多——我只是把form()form_start()混淆了。

只要我添加form_start()来代替form(),一切都会正常工作。

最新更新