Symfony 和 FOSUserBundle。自定义注册模板上的验证错误
Symfony & FOSUserBundle. Customize validation errors on register template
我试图解决我的问题:我无法找到 register_content.html.twig
的验证错误的定义位置。
我需要知道如何显示我想要的错误。现在我的注册是这样的:
如您所见,存在一个丑陋的验证错误。我想更改标签
<div>
<ul><li> Las dos contraseñas no coinciden. </li></ul>
</div>
由另一个人在某处预先定义。
我已经覆盖了视图 register_content.html.twig 我可以显示验证错误但不能自定义它。
<div>
{{ form_errors(form.email) }}
{{ form_errors(form.username) }}
{{ form_errors(form.plainPassword.first) }}
{{ form_errors(form.plainPassword.second) }}
</div>
您知道如何自定义 HTML 验证错误的结构吗?
例如 in login_content.html.twig
验证错误显示如下:
这是可能的,因为在 login_content.html.twig
中定义了验证错误:
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
您必须覆盖默认的 symfony 表单错误块。
您可以在 symfony documentation
中找到如何操作
您将能够全局或按视图设置此表单主题,如 documentation
中所示
因此,例如,如果您想在带有 class alert alert-danger
的 div 中显示错误,您将创建一个文件 views/Form/form_errors.html.twig
{% form_theme form _self %}
{# form_errors.html.twig #}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<div class='alert alert-danger'>
{% for error in errors %}
<div>{{ error.message }}</div>
{% endfor %}
</div>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
并仅在注册表格中使用此自定义主题,您将在覆盖文件顶部调用 register_content.html.twig
{% form_theme form 'Form/form_errors.html.twig' %}
您可以使用 translation. In parameters.ini set locale to your language and create message file。然后在树枝模板中使用:
{% if error %}
<div class="error">{{ error.message|trans({},'messages') }}</div>
{% endif %}
另一个解决方案是:
{{ error.message | replace({"Bad credentials." : "Invalid username or password."}) }}
我找到了解决办法。我已经将 Twig 中的 {{ form_error }}
变量更改为 form.field.vars.errors
.
一个例子,如果你想自定义你的电子邮件验证错误:
<div>
{{ form_errors(form.email) }}
</div>
更改为:
{% for errorItem in form.email.vars.errors %}
<div>{{ errorItem.message }}</div>
{% endfor %}
您可以使用 div 标签或任何您想要的标签。
我试图解决我的问题:我无法找到 register_content.html.twig
的验证错误的定义位置。
我需要知道如何显示我想要的错误。现在我的注册是这样的:
如您所见,存在一个丑陋的验证错误。我想更改标签
<div>
<ul><li> Las dos contraseñas no coinciden. </li></ul>
</div>
由另一个人在某处预先定义。
我已经覆盖了视图 register_content.html.twig 我可以显示验证错误但不能自定义它。
<div>
{{ form_errors(form.email) }}
{{ form_errors(form.username) }}
{{ form_errors(form.plainPassword.first) }}
{{ form_errors(form.plainPassword.second) }}
</div>
您知道如何自定义 HTML 验证错误的结构吗?
例如 in login_content.html.twig
验证错误显示如下:
这是可能的,因为在 login_content.html.twig
中定义了验证错误:
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
您必须覆盖默认的 symfony 表单错误块。 您可以在 symfony documentation
中找到如何操作您将能够全局或按视图设置此表单主题,如 documentation
中所示因此,例如,如果您想在带有 class alert alert-danger
的 div 中显示错误,您将创建一个文件 views/Form/form_errors.html.twig
{% form_theme form _self %}
{# form_errors.html.twig #}
{% block form_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<div class='alert alert-danger'>
{% for error in errors %}
<div>{{ error.message }}</div>
{% endfor %}
</div>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
并仅在注册表格中使用此自定义主题,您将在覆盖文件顶部调用 register_content.html.twig
{% form_theme form 'Form/form_errors.html.twig' %}
您可以使用 translation. In parameters.ini set locale to your language and create message file。然后在树枝模板中使用:
{% if error %}
<div class="error">{{ error.message|trans({},'messages') }}</div>
{% endif %}
另一个解决方案是:
{{ error.message | replace({"Bad credentials." : "Invalid username or password."}) }}
我找到了解决办法。我已经将 Twig 中的 {{ form_error }}
变量更改为 form.field.vars.errors
.
一个例子,如果你想自定义你的电子邮件验证错误:
<div>
{{ form_errors(form.email) }}
</div>
更改为:
{% for errorItem in form.email.vars.errors %}
<div>{{ errorItem.message }}</div>
{% endfor %}
您可以使用 div 标签或任何您想要的标签。