Есть ли способ получить доступ к имени пользователя зарегистрированного пользователя на странице, доступному для пользователей анонимных пользователей в 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
.
Вы должны попробовать что-то вроде этого:
установить значение по умолчанию для анонимного:
{{ app.user.username|default('Not Logged') }}
Попробуй это
{{ app.security.getToken().getUser() }}
Я не уверен, правильно ли я понял вашу проблему, но ее правда, что {{ app.user.username }}
выдает исключение, потому что нет объекта пользователя, если вы не вошли в систему. Поэтому просто проверьте, существует ли объект:
{% if app.user is defined %}
{# link to account #}
{% else %}
{# link to login #}
{% endif %}
Если этот намек не является ожидаемым, дайте нам некоторый код.
$this->getDoctrine()->getRepository('User')->find($id)
.