我想覆盖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)
答案 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
。