2

我有扩展FOSUserBundle的实体User

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

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

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

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

这个例子不起作用。

4

1 回答 1

3

你必须修改类onSuccess的方法RegistrationFormHandler。检查doc的Overriding Form Handlers部分。在您覆盖的方法中,您只需添加

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

就在调用父onSuccess方法之前。

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

于 2012-04-08T19:54:04.600 回答