Получить имя пользователя в Synfomy (в Twig) на странице, доступной для анонимных пользователей

0

Есть ли способ получить доступ к имени пользователя зарегистрированного пользователя на странице, доступному для пользователей анонимных пользователей в Symfony 2.6.1?

Пример. У меня есть главная страница, где есть ссылка для входа в систему, и если у пользователя есть вход в систему, я хочу отобразить его имя пользователя в качестве ссылки на его учетную запись, а не на ссылку для входа.

Если я использую {{ app.user.username }} будет отображаться ошибка

Impossible to access an attribute ("username") on a NULL variable ("")

потому что app.user является нулевым объектом на страницах с security: false defined is security.yml. Он будет работать только на страницах, которые должны находиться под брандмауэром без security: false.

Теги:
authentication
twig
symfony-2.6

3 ответа

0
Лучший ответ

Вы должны попробовать что-то вроде этого:
установить значение по умолчанию для анонимного:

{{ app.user.username|default('Not Logged') }}
0

Попробуй это

{{ app.security.getToken().getUser() }}
0

Я не уверен, правильно ли я понял вашу проблему, но ее правда, что {{ app.user.username }} выдает исключение, потому что нет объекта пользователя, если вы не вошли в систему. Поэтому просто проверьте, существует ли объект:

{% if app.user is defined %}
    {# link to account #} 
{% else %}
    {# link to login #}
{% endif %}

Если этот намек не является ожидаемым, дайте нам некоторый код.

  • 0
    Но я хочу получить имя пользователя, даже если "app.user" не определен. Является ли это возможным?
  • 0
    Затем вы должны получить объект пользователя по идентификатору. Что-то вроде $this->getDoctrine()->getRepository('User')->find($id) .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню