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

问题描述 投票:0回答:1

我使用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)没有被翻译。虽然te标签'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应用程序中,我找不到解决方案。

symfony bootstrap-4 translation
1个回答
-1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.