Я создал новый проект с использованием скелета веб-сайта Symfony и создал новую регистрационную форму, следуя инструкции по Symfony:
https://symfony.com/doc/current/doctrine/registration_form.html#registrationformtype
Внутри twig.yaml я настроил bootstrap_4_layout:
twig:
...
form_themes: ['bootstrap_4_layout.html.twig']
В моем классе RegistrationFormType я хотел бы перевести сообщения об ошибках в случае сбоя проверки:
->add('plainPassword', RepeatedType::class, [
'required' => true,
'type' => PasswordType::class,
'first_options' => ['label' => 'register.password'],
'second_options' => ['label' => 'register.password_repeat'],
'mapped' => false,
'constraints' => [
new Length([
'min' => 6,
'max' => 4096,
'minMessage' => 'register.password_min_length'
]),
],
])
К сожалению, текст (register.password_min_length) не переведен. В то время как метки 'register.password' и 'register.password_repeat' переводятся, как и ожидалось. После проверки bootstrap_4_layout.html.twig я заметил, что сообщение об ошибке не переведено, поэтому я попытался написать тему пользовательской формы:
{% form_theme registrationForm _self %}
{% 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|trans() }}</span>
</span>
{%- endfor -%}
</span>
{%- endif %}
{%- endblock form_errors %}
Теперь ошибка переводится, но {{limit}} не заменяется фактическим значением.
У кого-нибудь была похожая проблема? Также в приложении Symfony Demo я не смог найти решение.