2010-11-18 139 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() 
相关问题