Symfony FosUserBundle-使用户名为nullable true
社区 我使用FosUserBundle,但用户名有问题 在我的页面上,你只需要一封电子邮件和一个密码。 =>您可以使用用户名!因此,我无法用setUsername$email覆盖实体中的setEmail函数^^ 如果在配置中使用此选项,则会出现以下错误Symfony FosUserBundle-使用户名为nullable true,symfony,null,entity,symfony-forms,fosuserbundle,Symfony,Null,Entity,Symfony Forms,Fosuserbundle,社区 我使用FosUserBundle,但用户名有问题 在我的页面上,你只需要一封电子邮件和一个密码。 =>您可以使用用户名!因此,我无法用setUsername$email覆盖实体中的setEmail函数^^ 如果在配置中使用此选项,则会出现以下错误 fos_user: registration: form: validation_groups: [AppRegistration] 错误: SQLSTATE[23000]: Integrity
fos_user:
registration:
form:
validation_groups: [AppRegistration]
错误:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null
我能做什么
提前谢谢你
# app/config/security.yml
security:
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
更改您的security.yml以使fosuserbundle接受电子邮件作为用户名,并使您覆盖setUsername方法,因为用户名不能为空。例如
public function setEmail($email){
parent::setEmail($email);
parent::setUsername($email);
}
更改您的security.yml以使fosuserbundle接受电子邮件作为用户名,并使您覆盖setUsername方法,因为用户名不能为空。例如
public function setEmail($email){
parent::setEmail($email);
parent::setUsername($email);
}
您可以使用用户实体上方的条令\ORM\Mapping\AttributeOverrides和条令\ORM\Mapping\AttributeOverride注释使用户名为空,如下所示:
使用条令\ORM\Mapping\AttributeOverrides;
使用条令\ORM\Mapping\AttributeOverride;
/**
*使用者
*
*@ORM\Tablename=fos\u用户
*@AttributeOverrides{
*@AttributeOverridename=用户名,
*column=@ORM\column
*name=用户名,
*类型=字符串,
*长度=255,
*唯一=错误,
*可为空=真
*
* ,
*@AttributeOverridename=usernameCononical,
*column=@ORM\column
*name=usernamecononical,
*类型=字符串,
*长度=255,
*唯一=错误,
*可为空=真
*
*
* }
*@ORM\EntityrepositoryClass=AppBundle\Repository\UserRepository
*/
类用户扩展了BaseUser
{
//..
这段代码将使用户名在数据库中为空,而在验证规则中不是必需的
资料来源:
您可以使用用户实体上方的条令\ORM\Mapping\AttributeOverrides和条令\ORM\Mapping\AttributeOverride注释使用户名为空,如下所示:
使用条令\ORM\Mapping\AttributeOverrides;
使用条令\ORM\Mapping\AttributeOverride;
/**
*使用者
*
*@ORM\Tablename=fos\u用户
*@AttributeOverrides{
*@AttributeOverridename=用户名,
*column=@ORM\column
*name=用户名,
*类型=字符串,
*长度=255,
*唯一=错误,
*可为空=真
*
* ,
*@AttributeOverridename=usernameCononical,
*column=@ORM\column
*name=usernamecononical,
*类型=字符串,
*长度=255,
*唯一=错误,
*可为空=真
*
*
* }
*@ORM\EntityrepositoryClass=AppBundle\Repository\UserRepository
*/
类用户扩展了BaseUser
{
//..
这段代码将使用户名在数据库中为空,而在验证规则中不是必需的
资料来源:
删除用户名可能会导致复杂性,因此我建议您覆盖setEmail$email,以便在用户类中也设置用户名。这可能是多余的,但要确保每个需要用户名的内容仍然有效,例如,通过用户名+密码登录。当然,您还必须相应地更改注册表单,以便用户Let’除了他们的电子邮件地址之外,不要选择其他用户名,而且你可能希望将翻译改为电子邮件而不是用户名。嗯,好的。我需要一个字段eusername,它是正确的可选用户名和用户名电子邮件…然后我必须这样做。谢谢。希望还有其他方法。也许将来!删除用户名可能会导致e,因此我建议您覆盖setEmail$email,以便在用户类中也设置用户名。这可能是多余的,但要确保每个需要用户名的内容仍然有效,例如,通过用户名+密码登录。当然,您还必须相应地更改注册表单,以便用户不选择用户名以外的用户名他们的电子邮件地址,你可能想把翻译改为email而不是username。嗯,好的。我需要一个字段eusername,它是正确的、可选的用户名和username email…然后我必须这样做。谢谢。希望还有另一种方法。也许将来吧!既然mahok的答案,我也会这样做。我添加了一个子用户名,其中包含单击->可选我想要一个解决方案hwo接受空用户名并通过电子邮件和用户名(如果不是空的话)登录。@khaled_webdev您可能想问一个问题,因为mahok的回答也是这样。我添加了一个子用户名,其中包含->可选我想要一个解决方案hwo接受空用户名并通过电子邮件和用户名(如果不是空的话)登录.@khaled_webdev你可能想问个问题