В шаблонах Symfony 2 (с помощью Twig), как я могу эффективно проверить, не был ли пользователь зарегистрирован?
Я не хочу использовать проверки ROLE
. Я хочу простой способ проверить, не был ли пользователь зарегистрирован.
Я знаю, что сравнение app.user.username
с anon
работает, но это мне просто не нравится.
Вы можете проверить, установлен ли app.user.
{% if app.user %}
# user is logged in
{% else %}
# user is not logged in
{% endif %}
Хотя текущий ответ отвечает на вопрос OP, я хотел бы добавить более подробную информацию.
Я понимаю, что OP не хочет проверять роли, но я включаю их, чтобы другие пользователи SO могли копировать и вставлять их в будущем. - каждый раз, когда я это делаю, я в конечном итоге здесь!
Symfony Doc Источники:
Как уже было сказано, вы можете использовать app.user
, чтобы проверить, зарегистрирован ли какой-либо пользователь.
{% if app.user %}
# user is logged in (any and all users, regardless of ROLE_*)
{% elseif not app.user %}
# user is not logged in (note the `not` in the `elseif` statement)
{% endif %}
Вы можете использовать метод is_granted()
для проверки ROLES
(ниже приведены все роли, назначенные symfony, у вас также могут быть собственные роли (подробнее см. ниже))
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
# This user entered their credentials THIS session
{% elseif is_granted('IS_AUTHENTICATED_REMEMBERED') %}
# User logged in via a cookie (ie: Auth again before doing sensitive things)
{% elseif is_granted('IS_AUTHENTICATED_ANONYMOUSLY') %}
# This is a `guest` or anonymous user
{% endif %}
из документов:
IS_AUTHENTICATED_ANONYMOUSLY - автоматически назначается пользователю, который в защищенной части брандмауэра сайта, но на самом деле вошел в систему. Это возможно только в том случае, если анонимный доступ разрешен.
IS_AUTHENTICATED_REMEMBERED - автоматически назначается пользователю, который был аутентифицируется через куки файл "запомнить меня".
IS_AUTHENTICATED_FULLY - автоматически назначается пользователю, который имеет предоставили свои данные для входа в течение текущего сеанса.
Вы также можете использовать is_granted()
для проверки ролей.
Предполагая, что у нас есть 3 роли (ROLE_SUPER_ADMIN
, ROLE_ADMIN
и ROLE_USER
)
{% if is_granted('ROLE_SUPER_ADMIN') -%}
# You're `ROLE_SUPER_ADMIN`
{% elseif is_granted('ROLE_ADMIN') -%}
# You're `ROLE_ADMIN`
{% elseif is_granted('ROLE_USER') -%}
# You're `ROLE_USER`
{% else %}
# You're a `nobody` ;P
{%- endif %}
Посмотрите следующий ответ: Как проверить, зарегистрирован ли пользователь в Symfony2 внутри контроллера?
-%}
и {%-
означает? почему не %}
и {%
?
-
удаляет все завершающие пробелы, чтобы сделать его более читаемым в исходном коде браузера. Более подробная информация здесь: twig.sensiolabs.org/doc/templates.html#whitespace-control
{% if not app.user %}
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
используйте{% if is_granted('IS_AUTHENTICATED_FULLY') %}
. См. Документ Symfony2: symfony.com/doc/current/book/… . Также доступно для Silex: silex.sensiolabs.org/doc/providers/…