2013-05-21 29 views
0

我要重写form_widget_simple功能Symfony2的更改类名在树枝形式主题

{% 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声明 了when我做set form.vars.attr['class'] = 'error';我得到错误Unexpected token "punctuation" of value "." ("end of statement block" expected)

+0

你想为''元素添加一个修复'class'(for css-classes)属性吗? –

+0

是的,为现有的添加另一个'class' –

回答

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