РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
99 of 1361 menu

Функция is_granted

Функция is_granted проверяет, обладает ли текущий пользователь указанной ролью или разрешением. Первым параметром передаётся роль или атрибут доступа, вторым (необязательным) - объект, к которому проверяется доступ. Функция возвращает true, если доступ разрешён, и false в противном случае.

Синтаксис

{% if is_granted(role, subject) %} ... {% endif %}

Пример

Давайте проверим, имеет ли текущий пользователь роль ROLE_ADMIN:

{% if is_granted('ROLE_ADMIN') %} <p>hello admin</p> {% else %} <p>hello user</p> {% endif %}

Результат выполнения кода для пользователя с ролью ROLE_ADMIN:

<p>hello admin</p>

Пример

Давайте передадим вторым параметром объект article, чтобы проверить доступ к конкретной статье:

{% if is_granted('EDIT', article) %} <p>edit allowed</p> {% else %} <p>edit denied</p> {% endif %}

Результат выполнения кода для пользователя, которому разрешено редактирование:

<p>edit allowed</p>

Пример

Давайте передадим объект из контроллера в шаблон и проверим доступ к нему через is_granted. Сначала создадим контроллер:

<?php namespace App\Controller; use App\Entity\Article; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(Article $article): Response { return $this->render('article/show.html.twig', [ 'article' => $article, ]); } } ?>

Теперь выведем результат проверки в шаблоне:

{% if is_granted('VIEW', article) %} <p>{{ article.text }}</p> {% else %} <p>access denied</p> {% endif %}

Результат выполнения кода для статьи с текстом 'article' и разрешённым просмотром:

<p>article</p>

Смотрите также

  • тег if,
    который выполняет ветку кода по условию
  • функция app.user,
    которая возвращает текущего пользователя
  • функция app.current_route,
    которая возвращает имя текущего маршрута
  • функция path,
    которая генерирует URL по имени маршрута
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить