twig使用form_theme自定义form_row

时间:2017-12-26 14:57:59

标签: symfony twig

我想删除' div'来自form_row块使用form_theme,如下所示:

id     | date                   | value
id0    | dateFirst              | 13
id1    | dateFirst              | 10
id0    | 2017-10-01 00:01:23    | 13
id1    | 2017-11-01 00:06:03    | 10
...    | ...                    | ...
id0    | 2017-15-01 00:05:33    | 34
id1    | 2017-14-01 00:21:23    | 19
id0    | dateFinish             | 34
id1    | dateFinish             | 19

就像Doc https://symfony.com/doc/2.8/form/form_customization.html#customizing-the-form-row

中所述

麻烦的是,twig尝试在模板的那个位置渲染{%block form_row%},它在哪里,结果是

  

变量"形式"不存在。

因为我没有变量'形式'在这个模板中。

模板是通过页面页脚中的单独操作呈现的,并且它不会扩展任何内容。

1 个答案:

答案 0 :(得分:0)

好的,我在撰写问题时找到了解决方案。

将form_row块的代码放到单独的文件中可以解决问题。

{% form_theme feedback_form _self %}

{% block form_row %}
    {{ form_label(form) }}
    {{ form_errors(form) }}
    {{ form_widget(form) }}
{% endblock %}

{{ form_start(feedback_form) }}
    {{ form_row(feedback_form.name) }}
    {{ form_row(feedback_form.email) }}
    {{ form_row(feedback_form.subject) }}
    <button type="submit">Send</button>
{{ form_end(feedback_form) }}

扩展另一个模板也有帮助。

{# feedback_form.html.twig #}
{% form_theme feedback_form 'fields.html.twig' %}

{{ form_start(feedback_form) }}
    {{ form_row(feedback_form.name) }}
    {{ form_row(feedback_form.email) }}
    {{ form_row(feedback_form.subject) }}
    <button type="submit">Send</button>
{{ form_end(feedback_form) }}

{# fields.html.twig #}
{% block form_row %}
    {{ form_label(form) }}
    {{ form_errors(form) }}
    {{ form_widget(form) }}
{% endblock %}