FOS UserBundle实体构造

时间:2012-04-08 16:46:40

标签: php symfony fosuserbundle

我有实体用户,它扩展了 FOSUserBundle

class User extends BaseUser
{
...
    protected $ref_id;
    /**
     * @ORM\Column(type="float", length="11")
...

ref_id 来自Cookie变量 ref_id 。每次新用户注册时,如何将此值传递给实体用户。我是否必须覆盖 registerAction 或在实体用户上创建构造函数,并以某种方式传递 ref_id

另外,每次新用户注册时,我都需要验证(从数据库检查) ref_id 。我怎样才能做到这一点 ?

    class User extends BaseUser
    {
    ...
       public function __construct()
       {
           $em = $this->getDoctrine()->getEntityManager();

此示例不起作用。

1 个答案:

答案 0 :(得分:3)

您必须修改onSuccess类的RegistrationFormHandler方法。检查doc覆盖表单处理程序部分。在您重写的方法中,您只需添加

$user->setRefId($this->request->cookies->get('ref_id'));

在调用父级onSuccess方法之前。

至于验证,您必须创建自定义验证约束,您必须注入@request@doctrine.orm.entity_manager服务以获取cookie并在数据库中验证它。您可以查看cookbook entry