我使用Symfony website skeleton创建了一个新项目,并按照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应用程序中,我找不到解决方案。
答案 0 :(得分:-1)
我在Github上找到了一个非常有用的项目:
https://github.com/giorgiopagnoni/symfony4-user
我可以向像我这样有类似问题的每个人推荐这个项目。在检查代码时,一切变得越来越清晰。