我有两个分支文件——index
和layout
。我正在尝试用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()
,一切都会正常工作。