5

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

4

3 回答 3

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 要好得多,也更灵活。当然,对于“经典”网站或 Web 应用程序,FOSUserBundle 是最好的。

如果你也是这种情况,我建议你这样做。这是开始的文档:书中的安全性和食谱中的安全性

我希望这可以帮助你。

对不起我的英语不好,我希望它是可以理解的

于 2013-02-28T12:11:40.233 回答
1

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

于 2012-11-02T14:48:46.340 回答
-4

您需要覆盖实体用户中的以下方法。

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 复制到您的捆绑包中,然后按照我的说明进行更改。

检查文档:https ://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.2.0/Resources/doc/doctrine.md

问候马克斯

于 2012-09-10T21:29:54.623 回答