2012-04-08 6 views
2

エンティティユーザFOSUserBundleです。FOSUserBundleエンティティコンストラクト

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

変数のクッキーから来ref_idをref_id。この値をエンティティユーザに新しいユーザが登録するたびにどのように渡すことができますか? registerActionをオーバーライドするか、エンティティユーザにコンストラクタを作成して何らかの形でref_idを渡す必要がありますか?

さらに、新しいユーザーが登録するたびに、私はref_idを検証する必要があります(データベースからチェックする必要があります)。どうやってやるの ?

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

この例は機能しません。

答えて

3

onSuccessの方法をRegistrationFormHandlerクラスに変更する必要があります。 docのフォームハンドラをオーバーライドセクションをチェックしてください。あなたのオーバーライドされたメソッドでは、ちょうど親のonSuccessメソッドを呼び出す前に

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

を追加する必要があります。

@request@doctrine.orm.entity_managerサービスを注入してデータベース全体に有効性を確認するためには、カスタム検証制約を作成する必要があります。これはcookbook entryです。

関連する問題