Symfony2以树枝形式主题更改类名

时间:2013-05-21 10:46:54

标签: symfony twig

我想覆盖form_widget_simple功能

{% block form_widget_simple %}
{% spaceless %}
    {% set type = type|default('text') %}
    {% if errors|length > 0 %}
        {{dump(form.vars.attr)}}
    {% endif %}
    <input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
{% endspaceless %}
{% endblock form_widget_simple %}

但我不知道如何在form.vars.attr['class']语句中设置if 我做set form.vars.attr['class'] = 'error';时收到错误Unexpected token "punctuation" of value "." ("end of statement block" expected)

1 个答案:

答案 0 :(得分:5)

如您所见,在widget_attributes块中处理添加其他属性。如果您查看那里,您会看到simple foreach over the attr array,其中包含所有属性。我认为可以完成一个合并现有的简单集合。因此,您的form_widget_simple块看起来像

{% block form_widget_simple %}
{% spaceless %}
    {% set type = type|default('text') %}
    {% if errors|length > 0 %}
        {{dump(form.vars.attr)}}
    {% endif %}
    {% set attr = attr|merge({'class': (attr.class|default('') ~ ' your-css-class')|trim}) %}
    <input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
{% endspaceless %}
{% endblock form_widget_simple %}

这将保留表单构建器中设置的每个类属性,并添加your-css-class作为附加类。如果未定义类属性,则仅设置your-css-class