电子邮件用户不需要

时间:2012-09-10 15:23:45

标签: symfony fosuserbundle

我想在我的用户实体上设置不需要的电子邮件。怎么办? 我在FOSUserBundle / config /中搜索过但我没有找到任何关于电子邮件的“必需”参数。

3 个答案:

答案 0 :(得分:7)

在Tib回答之后,我就是这样做的。它工作正常:

/**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity
 * @ORM\AttributeOverrides({
 *      @ORM\AttributeOverride(name="email", column=@ORM\Column(type="string", name="email", length=255, unique=false, nullable=true)),
 *      @ORM\AttributeOverride(name="emailCanonical", column=@ORM\Column(type="string", name="email_canonical", length=255, unique=false, nullable=true))
 * })
 */
class User extends BaseUser {
    // ...
}

编辑:

以前的解决方案很容易实现并且工作正常,但是在将Symfony更新到版本2.1.8并且不更改我的应用程序中的任何内容之后,生成实体会导致抛出Doctrine映射异常(无效字段覆盖...)

尽管失去了很多时间试图解决这个问题,但我只是被困住了。

然后我终于意识到FOSUserBundle提供了许多我不使用的功能,但并不能满足我的需求,这些功能非常基础。

我需要禁用电子邮件要求,因为我的应用用户管理是“类似软件”:没有注册,没有电子邮件发送,没有个人资料,只有管理员管理的用户和角色等...

我正在调整一种不符合我需求的工具。所以我决定自己实现Symfony安全性。

这是一项更多的工作,但它并不是很困难,结果比调整FOSUserBundle更好,更灵活。当然,对于“经典”网站或网络应用程序,FOSUserBundle是最好的。

如果您也是这种情况,我建议您这样做。以下是要开始的文档:Security in the BookSecurity in the CookBook

我希望这可以帮到你。

对不起我的英语很差,我希望它是可理解的

答案 1 :(得分:1)

检查此PR https://github.com/doctrine/orm-documentation/pull/117/files并查看@AttributeOverrides

答案 2 :(得分:-4)

您需要在实体User中覆盖以下方法。

class User extends BaseUser // inheritance from fos
{
   /**
   * @var string
   * @ORM\column(type="string", name="email", length=255, unique=true, )
   * @Assert\Email(
   *     checkMX = true
   * )*/
   protected $email
}
}

您需要将表格定义更改为:

class User extends BaseUser // inheritance from fosUserBundle
    {
       /**
       * @var string
       * @ORM\column(type="string", name="email", length=255, unique=false, nullable=true )
       */
       protected $email
    }
}

emailCanonical属性需要同样的东西。

如果没有通过。您需要将整个模型从FOS复制到您的包中,然后在我写完时进行更改。

查看文档:{​​{3}}

关心Max