2010-11-18 98 views
1

我正在使用Symfony和sfDoctrineGuardPlugin。顯示當前登錄用戶

如何在模板中顯示當前用戶的用戶名?

我試過$ this-> getUser() - > getUsername(),但我得到的是錯誤:「調用未定義的方法sfPHPView :: getUser。」

我試圖在一個layout.php中顯示的用戶名,而不是在一個特定的模塊/模板

+0

那麼根據你的錯誤,$這沒有一個叫做getUser()的函數,請確保你是從正確的對象調用它。 – 2010-11-18 14:14:49

+0

您可以在Symfony項目網站 – Kennethvr 2010-11-18 14:23:20

回答

8

在模板(視圖),使用$sf_user

對於用戶名:

echo $sf_user->getUsername(); 

對於ID:

echo $sf_user->getAttribute('user_id', null, 'sfGuardSecurityUser'); 
在動作(控制器)0

或者,你可以做你在你的問題做什麼:

$this->username = $this->getUser()->getUsername(); 

然後$username將在您的視圖模板可用。

請參閱template shortcuts Symfony文檔中的其他視圖變量快捷方式。

+0

的文檔中找到關於這類問題的答案我可能是錯的,但我認爲最好不要在模板中使用$ sf_user,您可以更好地檢索操作中所需的所有數據然後使用填充了要在模板中使用的數據的變量。只是爲了分離業務和意見。 – Kennethvr 2010-11-18 14:24:52

+1

我認爲這取決於你在視圖中要做多少邏輯 - 如果你只是顯示用戶名,那麼我沒有看到任何傷害 - 這是一個變量,你正在呼應,沒有額外的邏輯需要(與echo $ myObj->字段相同;'真的)。如果您需要在顯示之前對該變量進行操作,那麼最好將其保存在操作中。 – richsage 2010-11-18 14:31:48

+0

是的,$ sf_user-> getUsername()做了竅門,謝謝。 – Manu 2010-11-18 15:36:18

0

請嘗試以下操作。其中一個可能工作。

$this->getSfGuardUser() 
$this->getGuardUser() 
$this->getUser()->getSfGuardUser() 
$this->getUser()->getGuardUser()