Symfony 4长度验证器翻译错误消息

时间:2019-03-27 23:51:26

标签: symfony bootstrap-4 translation

我使用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应用程序中,我找不到解决方案。

1 个答案:

答案 0 :(得分:-1)

我在Github上找到了一个非常有用的项目:

https://github.com/giorgiopagnoni/symfony4-user

我可以向像我这样有类似问题的每个人推荐这个项目。在检查代码时,一切变得越来越清晰。