0

I want to override form_widget_simple function

{% 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 %}

but I dont know how to set form.vars.attr['class'] inside if statement Whent I do set form.vars.attr['class'] = 'error'; I get error Unexpected token "punctuation" of value "." ("end of statement block" expected)

4

1 回答 1

5

如您所见,添加其他属性是在widget_attributes块中处理的。如果你在那里看一下,你会看到一个简单的 foreachattr数组,其中包含所有属性。我认为可以完成一个合并现有集合的简单集合。所以你的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设置。

于 2013-05-21T11:35:25.200 回答