Symfony 3:仅在出现错误时自定义您的类输入字段

时间:2017-08-06 06:52:10

标签: php forms symfony

通常我们可以自定义输入字段的属性类 树枝与

{{ form_widget(form.username,{'attr':{
       'class':'input',
       'placeholder':'Write your username'
    }}) }}

但是如何根据此字段有错误的事实添加一个类?

例如,如果在提交过程中遇到错误,我希望我的输入标记有一个额外的类“is-danger”

2 个答案:

答案 0 :(得分:0)

我之前通过设置变量找到了解决方法:

            {% if form_errors(form.username) is not empty %}
                    {% set class = "input is-danger" %}
                {% else %}
                    {% set class = "input" %}
                {% endif %}
                {{ form_widget(form.username,{'attr':{
                    'class':class,
                    'placeholder':'Write your username'
                }}) }}

虽然在模板中发布所有这些内容有点麻烦。

答案 1 :(得分:0)

您可以使用宏来改进您的解决方法:

{% macro inputClass(field) %}
{% spaceless %}
    class="input{% if form_errors(field) is not empty %} is-danger{% endif %}"
{% endspaceless %}
{% endmacro %}

然后

{{ form_widget(form.username, {'attr': {
    'class': inputClass(form.username),
    'placeholder': 'Write your username'
}}) }}

如果您想要更全面的解决方案,您应该能够override a form block。或者,不是将属性放在主窗口小部件上,而是可以自定义form_errors()调用,而不是要求将该类添加到窗口小部件本身。