Symfony и FOSUserBundle. Настройка ошибок проверки в шаблоне регистрации
Я пытался решить свою проблему: я не могу найти, где определены ошибки проверки 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-структуру ошибок проверки?
Например в login_content.html.twig
ошибки проверки отображаются следующим образом:
Это возможно, потому что в login_content.html.twig
определены ошибки проверки:
{% if error %}
<div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
3 answers
Вам придется переопределить блок ошибок формы symfony по умолчанию. Вы можете узнать, как это сделать, в документации symfony
Вы сможете задать эту тему формы глобально или для каждого представления, как показано в документации
Так, например, если вы хотите отобразить ошибки внутри div с классом alert alert-danger
, вы должны создать файл 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' %}
Я нашел решение. Я изменил переменную {{ form_error }}
в Twig для form.field.vars.errors
.
Пример, если вы хотите настроить ошибки проверки электронной почты:
<div>
{{ form_errors(form.email) }}
</div>
Измените его на:
{% for errorItem in form.email.vars.errors %}
<div>{{ errorItem.message }}</div>
{% endfor %}
Вы можете использовать тег div или любой другой тег, который вы хотите.
Вы можете использовать перевод . В файле parameters.ini установите языковой стандарт на свой язык и создайте файл сообщений . Затем в шаблоне ветки используйте:
{% if error %}
<div class="error">{{ error.message|trans({},'messages') }}</div>
{% endif %}
Другим решением было бы:
{{ error.message | replace({"Bad credentials." : "Invalid username or password."}) }}