This tutorial has a new version, check it out!

Accessing the User

Now that we’re logged in, how can we get access to the User object?

In a Template

Open up the homepage template. In Twig, we can access the User object by calling app.user. Let’s use it to print out the username:

{# src/Yoda/EventBundle/Resources/views/Event/index.html.twig #}

{# ... #}
{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
    <a class="link" href="{{ path('logout') }}">
        Logout {{ app.user.username }}
{% endif %}


If the user isn’t logged in, app.user will be null. So be sure to check that the user is logged in first before using app.user.

Accessing the User in a Controller

From a controller, it’s just as easy. Go to the controller function for the homepage and grab an object called the security context. Then call getToken() and getUser():

public function indexAction()
    $user = $this->container
    // ...

Actually, since this is a bit long, the Symfony base controller gives us a shortcut method called getUser:

public function indexAction()
    $user = $this->getUser();
    // ...

I showed you the longer option first so that you’ll understand that there is a service called security.context which is your key to getting the current User object. Remove this debug code before moving on.

Leave a comment!