我有两个文件 - 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中输出我的表单但是将它包装在block main中?
道歉应该是重复 - 我正在努力为此找到合适的关键字。虽然我可以看到正在发生的事情(有点),但我实际上并不知道所谓的行为是什么。
事实证明,这比我想象的要简单得多 - 我只是混淆了form()
和form_start()
。
一旦我添加form_start()
代替form()
,一切正常。