2011-10-29 21 views
2

嗨我正在嘗試獲取登錄的用戶,同時我將一個對象保存在propel模型類中。Symfony2控制器外部的會話數據

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

和內部樹枝

app.user 

,但如何從模型/實體內得到同樣的信息:

我從所有的Symfony2您通過獲取用戶的文檔看

編輯:

好,所以我想做更多的事情,因爲我看不到如何做到這一點。我看着依賴注入注入,但不知道它是真的是我想要做的。

我有一個名爲事件實體類和事件 - > postSave(另一個名爲UserToEvent)我要創建UserToEvent對象,並保存到數據庫與新event.id和user.id

我真的不認爲這需要一個定義爲here的「服務」,因爲這表示服務是「某種」全局「任務」,並且每次我想要保存新對象時都必須將用戶注入到Event對象中似乎有點浪費。通常我會期望能夠按照Application :: getUser()的方式做一些事情。但這似乎不可能。

+0

你可以給我們更多的用例嗎?你確定你不應該寫一個服務類來執行你需要的操作嗎? DIC可以將安全上下文權利注入到服務中。 – Kasheen

+0

我用一個用例更新了我的問題。謝謝 –

回答

3

使用依賴注入。

將安全上下文或用戶注入到您所需的類中。這是您在使用Symfony2應用程序時應該開始遵循的方法。

您可以手動或使用DIC注入服務。既然你想使用它的實體類裏面,你可能需要通過在構造函數依賴

class Page 
{ 
    private $user = null; 

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

或setter:

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