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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由于使用了parent()和块结构,在调用form_row()之前,Twig输出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中输出我的表单但是将它包装在block main中?

道歉应该是重复 - 我正在努力为此找到合适的关键字。虽然我可以看到正在发生的事情(有点),但我实际上并不知道所谓的行为是什么。

答案

事实证明,这比我想象的要简单得多 - 我只是混淆了form()form_start()

一旦我添加form_start()代替form(),一切正常。

以上是关于由于使用了parent()和块结构,在调用form_row()之前,Twig输出Symfony表单元素的主要内容,如果未能解决你的问题,请参考以下文章

行内元素和块级元素

行内元素和块级元素

行内元素和块级元素

python - 使用带有大 csv 的 pandas 结构(迭代和块大小)

CUDA中的线程和块结构以及如何分配具有不同结构的线程(c ++)

行内元素和块级元素