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

Директива canany

Директива canany в Blade позволяет проверить, имеет ли текущий пользователь хотя бы одно право из переданного списка. Первым параметром передаётся массив имён разрешений, вторым - модель, к которой применяется проверка. Если пользователь имеет хотя бы одно из указанных прав, то содержимое блока будет отображено. Директива является удобной альтернативой нескольким вызовам can через ИЛИ.

Синтаксис

@canany(['permission1', 'permission2'], $model) <p>User has at least one of the permissions.</p> @endcanany

Пример

Проверим, может ли пользователь редактировать или удалять статью:

@canany(['edit', 'delete'], $article) <div class="actions"> <a href="{{ route('articles.edit', $article) }}">Edit</a> <form action="{{ route('articles.destroy', $article) }}" method="POST"> @csrf @method('DELETE') <button type="submit">Delete</button> </form> </div> @endcanany

Пример

Используем директиву canany с тремя правами и покажем разные сообщения в зависимости от результата:

@canany(['manage-users', 'manage-posts', 'manage-settings']) <div class="admin-panel"> <p>You have administrative privileges.</p> </div> @else <div class="user-panel"> <p>You are a regular user.</p> </div> @endcanany

Пример

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

@canany(['view-reports', 'export-data']) <li> <a href="{{ route('reports.index') }}">Reports</a> </li> @endcanany

Пример

Комбинируем директиву canany с другими директивами для более сложной логики:

@foreach ($posts as $post) <div class="post"> <h3>{{ $post->title }}</h3> <p>{{ $post->content }}</p> @canany(['update', 'delete'], $post) <div class="post-actions"> @can('update', $post) <a href="{{ route('posts.edit', $post) }}">Edit</a> @endcan @can('delete', $post) <form action="{{ route('posts.destroy', $post) }}" method="POST" style="display:inline"> @csrf @method('DELETE') <button type="submit">Delete</button> </form> @endcan </div> @endcanany </div> @endforeach

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

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