symfony2:提交注册表后如何设置用户属性(不在表单中)?

时间:2011-11-18 16:44:11

标签: symfony symfony-forms

我在User类中添加了一个属性“color”,因此当用户注册时,我希望为该用户分配一个随机颜色。

如何巧妙地做到这一点?

3 个答案:

答案 0 :(得分:2)

在User类构造函数中设置它。

您可以在FOSUserBundle的用户constructor中找到为新用户设置默认值的好例子。

这种方法的一个优点是你不依赖于持久层事件,它根本没有持久层。

答案 1 :(得分:1)

我会在User实体中添加一个生命周期事件,一个prePersist事件。

在您的用户类中定义setRandomColor方法,该方法随机设置用户的颜色属性。

然后,将其作为prePersist事件添加到您的学说实体配置中。

lifecycleCallbacks:
    prePersist: [ setRandomColor ]

答案 2 :(得分:0)

如果您在单个会话期间需要用户颜色,则可以为执行此操作的用户定义属性:

$this->getUser()->setAttribute('attr-name',$attr-value);

并使用以下内容获取该属性:

$this->getUser()->getAttribute('attr-name');

但是,如果你想保留属性,就好像它是用户表中的属性一样 你可以

  • (显然)更新架构并在表格中添加字段

  • 使用hash function在用户表格的主键上获取颜色。

祝你好运!