0

当我尝试注册两个具有相同名称的用户时。我收到该名称已经存在于 fosbundle 的消息。我的问题是如何避免这种情况?

4

2 回答 2

1

从您的评论来看,我相信您将用户名与名字和姓氏混淆了。您的用户可能有相同的名字和姓氏,但他们不能有相同的用户名。FOSUserBundle 使用用户名/密码组合来验证用户。通过一些配置,您可以允许用户使用电子邮件/密码登录,甚至使用电子邮件作为用户名。

在任何情况下,用户名都应该保持唯一。如果您正确配置了 FOSUserBundle,您应该拥有自己的用户实体类,该类从包中扩展用户实体。您可以在此处添加其他字段,例如名字和姓氏等。

于 2013-09-11T19:49:31.633 回答
0

如果您想允许多个用户拥有相同的用户名,您需要做的是覆盖 FOSUserBundle 控制器并在注册页面中设置一个新字段。我建议删除“用户名”字段并创建新的“名称”属性。

因此,添加一个名为“user_name”的名称,其作用与名字和姓氏相同。从注册表单中删除用户名字段,因为它必须是唯一的。

您可以在此处了解更多信息:http: //symfony.com/doc/current/bundles/FOSUserBundle/overriding_forms.html

当使用 FOSUserBundle 创建用户时,他们必须需要用户名、电子邮件和密码。因为您已经删除了用户名字段,所以我只需将电子邮件复制为用户名(因为您至少需要一个唯一的字段)。

如果您覆盖登录表单,使其仅检查电子邮件和密码以进行验证,而不是用户名/电子邮件和密码,它应该为您提供仅通过电子邮件和密码登录的所需功能。因为用户名也将是他们的电子邮件。

当您覆盖表单与股票注册表时的新注册页面示例

老的:

Email: email@address.com
Username: uniquename
Password: xxxxxxx
Repeat password: xxxxxxx

新的:

Email: email@address.com
User_name: duplicatesallowed
Password: xxxxxxx
Repeat password: xxxxxxx

修改控制器,以便 user.username 采用 user.email 的值(因为电子邮件将是唯一的)。

于 2016-04-28T01:48:23.670 回答