我有这个简单的表单,我需要一个字段的自定义模板来呈现<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>
这显然使得内联主题完全无法使用,所以我想我可能做错了......
如何在开始时摆脱那些额外的“某事”?
答案 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 %}
在已经使用继承的常规模板中自定义字段时,人们可能不会三思而后行,但这种感觉就像是黑客......