我想在我的用户实体上设置不需要的电子邮件。怎么办? 我在FOSUserBundle / config /中搜索过但我没有找到任何关于电子邮件的“必需”参数。
答案 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 Book和Security 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