1

社区,

我使用 FosUserBundle,但我的用户名有问题。

在我的页面上,您只需要电子邮件和密码。=> 你可以使用用户名!(因为,我不能用 setUsername($email) 覆盖实体中的 setEmail() 函数^^

如果我在我的配置中使用它,我会收到以下错误。

fos_user:
    registration:
        form:
            validation_groups: [AppRegistration]

错误:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null 

我能做些什么?

先感谢您!

4

2 回答 2

5
# 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);
}
于 2013-06-29T03:58:59.990 回答
0

您可以使用User 实体上方的Doctrine\ORM\Mapping\AttributeOverridesDoctrine\ORM\Mapping\AttributeOverride注释使用户名可以为空,如下所示:

use Doctrine\ORM\Mapping\AttributeOverrides;
use Doctrine\ORM\Mapping\AttributeOverride;

/**
 * User
 *
 * @ORM\Table(name="fos_user")
 *  @AttributeOverrides({
 *     @AttributeOverride(name="username",
 *         column=@ORM\Column(
 *             name="username",
 *             type="string",
 *             length=255,
 *             unique=false,
 *             nullable=true
 *         )
 *     ),
 *     @AttributeOverride(name="usernameCanonical",
 *         column=@ORM\Column(
 *             name="usernameCanonical",
 *             type="string",
 *             length=255,
 *             unique=false,
 *             nullable=true
 *         )
 *     )
 * })
 * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
 */
class User extends BaseUser
{
//..

此代码将使用户名在数据库中可以为空,并且在验证规则中不需要。

来源: https ://openclassrooms.com/forum/sujet/symfony-supprimer-username-fosuserbundle

于 2019-07-16T13:10:46.133 回答