symfony2 – 在模板中访问已登录的用户

我使用FOSuserbundle开始用户注册https://github.com/FriendsOfSymfony/FOSUserBundle

我已经注册/登录和注销。我现在想做的是抓住登录的用户数据,并将其显示在我的网站的每一页。喜欢“Hi用户名”在标题类型的事情。

它似乎嵌入一个控制器在我的应用程序/ Resources / views / base.html.twig是最好的方法来做这个http://symfony.com/doc/current/book/templating.html#embedding-controllers

所以我写了我的控制器来访问用户配置文件数据。我无法想出的是如何访问我的嵌入式控制器中的FOS方法。所以从我的Acme / UserBundle / Controller / UserController.php我想这样做:

public function showAction()
{
    $user = $this->container->get('security.context')->getToken()->getUser();
    if (!is_object($user) || !$user instanceof UserInterface) {
        throw new AccessDeniedException(
               'This user does not have access to this section.');
    }

    return $this->container->get('templating')
      ->renderResponse('FOSUserBundle:Profile:show.html.'.$this->container
      ->getParameter('fos_user.template.engine'), array('user' => $user));
}

我抓住了:
vendor / bundles / FOS / UserBundle / Controller / ProfileController.php

您可以直接在树枝模板中访问用户数据,而无需在控制器中请求任何内容。用户可以这样访问:app.user。

现在,您可以访问用户的每个属性。例如,您可以访问以下用户名:app.user.username。

警告,如果用户未记录,则app.user为空。

如果要检查用户是否已记录,可以使用is_granted twig函数。例如,如果你想检查用户是否有ROLE_ADMIN,你只需要做is_granted(“ROLE_ADMIN”)。

所以,在您的每一个网页,你可以做:

{% if is_granted("ROLE") %}
    Hi {{ app.user.username }}
{% endif %}
http://stackoverflow.com/questions/7463650/accessing-the-logged-in-user-in-a-template

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:symfony2 – 在模板中访问已登录的用户