表单验证 - 我收到两次标签两次、表单、标签

2023-09-07 09:40:09 作者:我牵着你走i

我有一个注册表 - 来自 FOSUserBundle,它在模板中:

{% form_theme form 'AcmeMyBundle:Form:errors.html.twig' %}<form class="big-spacer" action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">{{ form_widget(form) }}

<input class="btn little-spacer" type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}"/></div></表格>

这里是errors.html.twig:

{% block field_errors %}{% 无空间 %}{% 如果错误|长度 >0%}<ul class="little-spacer nav text-error">{% for error in errors %}<li>{{loop.index}}.{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}</li>{% endfor %}</ul>{% 万一 %}{% endspaceless %}{% endblock field_errors %}
表单标签的使用

我刚刚从 TwitterBootstrap 添加了一些 css 类.

问题是我收到了两次验证的一些消息.

我的表单有 4 个字段 - 用户名、电子邮件、密码、确认密码

我试图打破尽可能多的验证规则,输出如下:

对于用户名:

此用户名已被使用.请选择另一个.用户名太短 - 请输入至少 2 个符号.用户名太短 - 请输入至少 2 个符号.

对于电子邮件:

请输入有效的电子邮件.请输入有效的电子邮件.

如果我输入已使用的电子邮件,错误只会显示一次:

此电子邮件已被使用.

对于密码:

如果它们很短:

密码太短 - 请输入至少 6 个符号.密码太短 - 请输入至少 6 个符号.

如果它们不匹配:

输入的密码不匹配.

另外一个奇怪的是,当我重新提交表单时,仍然无效,密码长度的通知只有一个:

密码太短 - 请输入至少 6 个符号.

在重新提交之前,他们是两个.

您知道为什么某些错误会显示两次以及如何解决此问题吗?非常感谢您!:)

更新

这是 C:xampphtdocsProjectsrcAcmeMyBundleEntityUser.php

命名空间 AcmeMyBundleEntity;使用 FOSUserBundleEntityUser 作为 BaseUser;使用 DoctrineORMMapping 作为 ORM;/*** @ORM实体* @ORMTable(name="fos_user")*/类用户扩展 BaseUser{/*** @ORMID* @ORMColumn(type="整数")* @ORMGeneratedValue(strategy="AUTO")*/受保护的$id;公共函数 __construct(){父::__construct();//你自己的逻辑}}

C:xampphtdocsProjectappResourcesFOSUserBundle ranslations 我复制了文件 validators.en.yml 并在其中删除[-Inf, Inf] 部分并稍微更改了消息.

我还覆盖了验证文件 - 我在这里复制了它:

C:xampphtdocsProjectsrcAcmeMyBundleResourcesconfigvalidation.xml

我只更改了密码的最小长度.其他一切都与原始文件中的相同.

我的包扩展了 FOSUserBundle:

C:xampphtdocsProjectsrcAcmeMyBundleAcmeMyBundle.php 该文件包含以下内容: