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

Директива cannot

Директива cannot в Blade-шаблонах Laravel выполняет проверку прав доступа, противоположную директиве can. Она принимает имя действия (ability) и необязательный аргумент - модель, к которой применяется это действие. Если у пользователя нет права на указанное действие, содержимое блока отображается. Директива может быть использована как самостоятельный блок или в паре с секцией else.

Синтаксис

@cannot('action', $model) <p>У вас нет прав на это действие.</p> @endcannot

В качестве параметров директива принимает:

  • action - строка с названием действия (например, 'update', 'delete');
  • $model - экземпляр модели, к которой применяется проверка (необязательный параметр).

Пример

Проверим, есть ли у пользователя право на редактирование статьи. Если права нет, выведем сообщение:

<h1>{{ $article->title }}</h1> <p>{{ $article->text }}</p> @cannot('update', $article) <p>Редактирование этой статьи недоступно.</p> @endcannot

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

<h1>Заголовок статьи</h1> <p>Текст статьи.</p> <p>Редактирование этой статьи недоступно.</p>

Пример

Используем директиву cannot вместе с секцией else для отображения разных блоков в зависимости от прав:

@cannot('delete', $article) <p>Кнопка удаления скрыта.</p> @else <button>Удалить статью</button> @endcannot

Если прав нет - выведется предупреждение, иначе - кнопка удаления.

Пример

Можно использовать директиву cannot без указания модели, передавая только название действия. Тогда проверка будет выполняться глобально, без привязки к конкретной модели:

@cannot('access-admin-panel') <p>Доступ к панели администратора запрещён.</p> @endcannot

Если текущий пользователь не авторизован или не имеет права 'access-admin-panel', будет показано соответствующее сообщение.

Пример

Комбинируем директиву cannot с проверкой аутентификации для более гибкого управления доступом:

@auth @cannot('update', $post) <p>Вы не являетесь автором этой записи.</p> @endcannot @else <p>Пожалуйста, авторизуйтесь для редактирования.</p> @endauth

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

  • директива can,
    которая проверяет наличие права у пользователя
  • директива canany,
    которая проверяет наличие любого из переданных прав
  • директива auth,
    которая проверяет аутентификацию пользователя
  • директива guest,
    которая проверяет, что пользователь не авторизован
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить