如何将变量传递给form_theme?

Mat*_*ieu 8 symfony twig

我想主题我的表单,以便字段的标签显示当前的区域设置,如

姓名(续):

所以我想像这样重写块generic_label:

{# form_theme.html.twig #}

{% block generic_label %}
{% spaceless %}
    {% if required %}
        {% set attr = attr|merge({'class': attr.class|default('') ~ ' required'}) %}
    {% endif %}
    <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>{{ label|trans }} (app.session.locale)</label>
{% endspaceless %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

并在我的模板中导入它:

{% form_theme options 'myBundle:Object:form_theme.html.twig' %}
Run Code Online (Sandbox Code Playgroud)

但是在表单模板中无法访问app变量.如何将变量传递给表单主题?

小智 5

在当前版本的树枝中(2016年),这是可能的。在您的模板中使用以下代码:

{{ form_row(form.content, {'testvar' : 'this is test variable'}) }}
Run Code Online (Sandbox Code Playgroud)

然后,在主题文件中,只需使用:

{{testvar}}
Run Code Online (Sandbox Code Playgroud)

当然,您将使用所需的字段名称来代替form.content。克里斯,干杯


P. *_*iro 1

您需要创建一个表单扩展才能完成它。看一眼

http://toni.uebernickel.info/2011/11/25/how-to-extend-form-fields-in-symfony2.html

了解如何创建扩展。

要访问会话区域设置,请确保注入容器。之后您将能够获得您想要的任何 var 值。