symfony 如何用红色呈现表单错误?

z31licg0  于 2023-03-13  发布在  其他
关注(0)|答案(2)|浏览(100)

在Ubuntu 16.04上使用Symfony3和PhpStorm.2016.3.2
我有一个形式的树枝,这里是我感兴趣的部分:

<div class="row">
    <div class="input-field col s12 validate" id="icon_telephone" type="tel">
          {{ form_errors(form) }}
          {% if form.vars.errors|length %}
            { form_row(
            form.authorPhone,
            form.authorPhone.vars|merge({'attr': {'autofocus': null}})
           )
          }}
          {% else %}
             {{ form_row(form.authorPhone) }}
          {% endif %}
     </div>
</div>

我想以红色“着色”错误为例,而不是实际使用Symfony的customize form rendering,这迫使我创建一个视图等。
所以我想知道是否有一种方法可以把错误变成红色,而不需要工业化的过程。

hpcdzsge

hpcdzsge1#

将某些东西变成红色是一种样式,因此您应该通过CSS来完成。向表单模板中添加一个css文件,您可以自定义表单错误的呈现方式,如下所示:

{% block form_errors %}
    {% spaceless %}
        {% if errors|length > 0 %}
        <ul>
            {% for error in errors %}
                <li class="error-message">{{ error.message }}</li>
            {% endfor %}
        </ul>
        {% endif %}
    {% endspaceless %}
{% endblock form_errors %}

和css

.error-message{
   color: red;
}

Symfony文档文章:https://symfony.com/doc/current/form/form_customization.html#customizing-error-output
最终的细枝模板如下所示:

<div class="row">
    <div class="input-field col s12 validate" id="icon_telephone" type="tel">
          {{ form_errors(form) }}
          {% if form.vars.errors|length %}
            { form_row(
            form.authorPhone,
            form.authorPhone.vars|merge({'attr': {'autofocus': null}})
           )
          }}
          {% else %}
             {{ form_row(form.authorPhone) }}
          {% endif %}
     </div>
</div>

<link rel="stylesheet" href="{{ asset('bundles/mybundle/css/style.css') }}" />

{% block form_errors %}
    {% spaceless %}
        {% if errors|length > 0 %}
        <ul>
            {% for error in errors %}
                <li class="error-message">{{ error.message }}</li>
            {% endfor %}
        </ul>
        {% endif %}
    {% endspaceless %}
{% endblock form_errors %}

你重写了form_errors块,当你调用{{ form_errors(form) }}时symfony将使用这个块。
如果你不想要最简单的解决方案,只需在浏览器中检查错误,找到正确的选择器,然后应用css,而不必在twig中定制表单渲染。
对于样式表,在Resources/public/css下创建文件,然后执行app/console assets:install

tcomlyy6

tcomlyy62#

如果你不想修改默认主题(或者使用另一个主题,比如bootstrap主题),这个简单的CSS就足够了:

<style>
    form > div > div > ul > li {
        color: red;
    }
</style>

相关问题