声明的内联表单模板/主题呈现

时间:2015-04-18 11:43:21

标签: twig

我有这个简单的表单,我需要一个字段的自定义模板来呈现<input>标记旁边的内容。由于我不会在其他地方需要这个,我想我会把它放在与建议here之类的表格相同的模板中:

{% form_theme form _self %}
{% block text_widget %}
  {{ block('form_widget_simple') }}
  something
{% endblock %}

{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}

这几乎就是整个模板(与ajax一起使用,因此没有周围的标记)。

现在的问题是,“某事”会在输出的开始处正确呈现,其中声明了块text_widget,就像任何其他块一样。它在<input>

旁边的表单中呈现得很好
  something

<form name="form" method="post" action="">
<table id="form"><tr>
        <td>                <label for="form_Search" class="required">Search</label></td>
        <td>  <input type="text" id="form_Search" name="form[Search]" required="required" autofocus="autofocus" />
  something
</td>
    </tr><tr style="display: none">
        <td colspan="2"><input type="hidden" id="form__token" name="form[_token]" value="dUwdoiz9vo1TJTRjvyUcz9Rwd-D7pTvqUH-R0zCtg28" /></td>
    </tr></table>
</form>

这显然使得内联主题完全无法使用,所以我想我可能做错了......

如何在开始时摆脱那些额外的“某事”?

1 个答案:

答案 0 :(得分:1)

问题已经写好并解决了问题,我不妨回答:

解决方案是从虚拟基本模板派生模板,以吞下基本模板中定义的块之外的任何输出:

{# empty.html.twig #}
{% block content %}
{% endblock %}

对于实际需要的模板:

{% extends 'empty.html.twig' %}
{% form_theme form _self %}
{% block text_widget %}
  {{ block('form_widget_simple') }}
  something
{% endblock %}

{% block content %}
  {{ form_start(form) }}
  {{ form_widget(form) }}
  {{ form_end(form) }}
{% endblock %}

在已经使用继承的常规模板中自定义字段时,人们可能不会三思而后行,但这种感觉就像是黑客......