我有一个视图,我正在尝试为每个字段单独覆盖表单主题。参考资料: http://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual-field.
该视图大致如下:
{% form_theme form _self %}
{% block _my_form_foo_widget %}
<div class="input-append">
{{ block('number_widget') }}
<span class="add-on">%</span>
</div>
{% endblock %}
<form>
{{ form_row(form.foo) }}
{{ form_row(form.bar) }}
</form>
对于foo和bar行,一切看起来都符合预期,然而_my_form_foo_widget
块本身也包含在输出中:
<div class="input-append">
<span class="add-on">%</span>
</div>
<form>
<div>
<label for="my_form_foo">Bar</label>
<div class="input-append">
<input type="text" id="my_form_foo" name="my_form[foo]">
<span class="add-on">%</span>
</div>
</div>
<div>
<label for="my_form_bar">Foo</label>
<input type="text" id="my_form_bar" name="my_form[bar]">
</div>
</form>
我无论如何都想不出自己错在哪里了。为了解决问题,我只是用HTML注释将代码块包裹起来。
我的环境是Symfony 2.4.1和Twig 1.15.0。
%
符号有关的Twig解析错误。你尝试将<span>
中的%
更改为其他字符(例如+
)了吗?如果可以,请尝试使用{{'%'}}
替换%
。进一步地,您可以尝试将覆盖块移动到一个不同的模板中(例如form_theme.html.twig
),并使用{% form_theme form 'form_theme.html.twig' %}
。 - Nicolai Fröhlich