我有实体用户,它扩展了 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();
此示例不起作用。
答案 0 :(得分:3)
您必须修改onSuccess
类的RegistrationFormHandler
方法。检查doc的覆盖表单处理程序部分。在您重写的方法中,您只需添加
$user->setRefId($this->request->cookies->get('ref_id'));
在调用父级onSuccess
方法之前。
至于验证,您必须创建自定义验证约束,您必须注入@request
和@doctrine.orm.entity_manager
服务以获取cookie并在数据库中验证它。您可以查看cookbook entry。