从用户FosuserBundle Symfony获取角色和last_login

lal*_*ala 2 symfony fosuserbundle

我想在我的布局中获得角色的名称和last_login的日期.

我使用Symfony 2.5和FosuserBundle

所以,当我使用:

{{ app.user.username }}
Run Code Online (Sandbox Code Playgroud)

我得到用户名,但当我使用时:

{{ app.user.roles }}
Run Code Online (Sandbox Code Playgroud)

我得到数组这是很正常的,因为它是数组.

  <div class="floatleft marginleft10">
                    <ul class="inline-ul floatleft">
                        <li>Espace {{ app.user.username }}</li>

                        <li><a href="{{ path('fos_user_security_logout') }}">Logout</a></li>
                    </ul>
                    <br />               
                    <span class="small grey">Last Login: {{ app.user.last_login }}</span>
                </div>
Run Code Online (Sandbox Code Playgroud)

当我添加{{app.user.last_login}}时,我得到了异常:

       Method "last_login" for object "My\testBundle\Entity\Collaborateur" does not exist in MytestBundle::layout2.html.twig 
Run Code Online (Sandbox Code Playgroud)

任何帮助请!!

qoo*_*mao 7

角色

你会(如你所说)将返回从一个数组app.user.roles或者$user->getRoles()所以你应该把它当作一个数组.

列表..

<ul>
    {% for role in app.user.roles %}
        <li>{{ role }}</li>
    {% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

或以逗号分隔..

{% for role in app.user.roles %}
    {{ role }}{% if false == loop.last %}, {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

上次登录

该领域是......

/**
 * @var \DateTime
 */
protected $lastLogin;
Run Code Online (Sandbox Code Playgroud)

所以你应该使用..

{{ app.user.lastLogin }}
Run Code Online (Sandbox Code Playgroud)

可能还有日期过滤器..

{{ app.user.lastLogin|date('Y-m-d H:i:s') }}
Run Code Online (Sandbox Code Playgroud)