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確認してください。オーバーライドされたメソッドでは、追加するだけです

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

onSuccess親のメソッドを呼び出す直前。

検証に関しては、クッキーを取得してデータベース全体で検証するために注入@requestおよびサービスが必要なカスタム検証制約を作成する必要があります。@doctrine.orm.entity_managerこのクックブック エントリを確認できます。

于 2012-04-08T19:54:04.600 に答える