2011-10-29 5 views
2

こんにちは私はpropelモデルクラスにオブジェクトを保存しているうちにログインしているユーザーを取得しようとしています。Symfony2コントローラの外部にあるセッションデータ

私はあなたがして、ユーザーを取得Symfony2の上のすべてのドキュメントから参照

$this->get('security.context')->getToken()- >getUser() 

と小枝

app.user 

が、どのように私はモデル/エンティティの内部から同じ情報を入手できますか内部

EDIT:

私がやろうとしていることのほんの一部は、本当にどうやってこれを行うのか分かりません。私は依存性注入注射を見ましたが、私がしたいことが本当に正しいかどうかはわかりません。

私はイベントと呼ばれるエンティティクラスを持っているとEvent-> postSaveでUserToEvent(と呼ばれる別の)私はUserToEventオブジェクトを作成し、新しいevent.idでデータベースとuser.id

にそれを保存したいです私は実際には、これはサービスが "何らかの種類の"グローバル "タスク"であり、新しいオブジェクトを保存するたびにEventオブジェクトにユーザーを注入する必要があると定義されたhereとして "サービス"が必要だとは思わないちょっと無駄に思える。通常、私はApplication :: getUser()の行に沿って何かできることを期待しています。しかし、これは可能ではないようです。

+0

ユースケースについてもっと教えていただけますか?必要な操作を実行するためのサービスクラスを作成しないでください。 DICはセキュリティコンテキストをサービスに直接注入できます。 – Kasheen

+0

質問をユースケースで更新しました。ありがとう –

答えて

3

依存性注入を使用します。

必要なクラスにセキュリティコンテキストまたはユーザーを注入します。これは、Symfony2のアプリケーションを使って作業をしている間に始めるべきアプローチです。

手動またはDICを使用してサービスを注入できます。あなたはエンティティクラスの内部でそれを使用したいので、あなたはおそらく、コンストラクタに依存

に合格する必要があります:

class Page 
{ 
    private $user = null; 

    public function __construct($user) 
    { 
     $this->user = $user; 
    } 
} 

やセッター:

class Page 
{ 
    private $user = null; 

    public function setUser($user) 
    { 
     $this->user = $user; 
    } 
} 

またはメソッドのパラメータとして:

class Page 
{ 
    public function doSomething($user) 
    { 
     // do something with $user 
    } 
} 

従属注入に関する良い一連の記事:http://fabien.potencier.org/article/11/what-is-dependency-injection

関連する問題