如何使用 bootstrap 和 twig 自定义 symfony 表单错误?

use*_*704 -1 symfony twig bootstrap-4 symfony4

对于我使用的 symfony 形式和树枝

{{ form_errors(form) }}
Run Code Online (Sandbox Code Playgroud)

使用bootstrap_4_horizontal_layout.html.twig,它工作正常,输出如下:

<span class="alert alert-danger d-block"><span class="d-block">
                    <span class="form-error-icon badge badge-danger text-uppercase">Error</span> <span class="form-error-message">Error</span>
                </span></span> 
Run Code Online (Sandbox Code Playgroud)

但我需要对其进行自定义以翻译消息旁边的引导错误标签。我可以在哪里定制它?

Jak*_*umi 5

您可以而且可能应该编写自己的表单主题并覆盖该form_errors块以适应您的需求。作为参考:https://github.com/symfony/symfony/blob/537d373e0d8cb11fa70ddbe9559f2c4a741117a9/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_layout.html.twig#L294

因此,要实现您自己的表单主题,您只需要有一个文件,比方说my_form_style.html.twig

{% extends "bootstrap_4_horizontal_layout.html.twig" %}

{# override the blocks you want ... or add some, this is the original #}
{%- block form_errors -%}
    {%- if errors|length > 0 -%}
        <span class="{% if form is not rootform %}invalid-feedback{% else %}alert alert-danger{% endif %} d-block">
            {%- for error in errors -%}
                <span class="d-block">
                    <span class="form-error-icon badge badge-danger text-uppercase">{{ 'Error'|trans({}, 'validators') }}</span> <span class="form-error-message">{{ error.message }}</span>
                </span>
            {%- endfor -%}
        </span>
    {%- endif %}
{%- endblock form_errors %}
Run Code Online (Sandbox Code Playgroud)

然后你只需将表单主题设置为你的:

{% form_theme form "my_form_style.html.twig" %}
Run Code Online (Sandbox Code Playgroud)

享受