Вопрос
Laravel 5.1 @can, как использовать предложение OR Автор вопроса: Marcaum54 09.12.2015 Ответов: 8
Я не нашел, как использовать предложение (ИЛИ, И) в поле зрения с @can для проверки нескольких возможностей ...
Я пытался:
@can(['permission1', 'permission2'])
@can('permission1' or 'permission2')
@can('permission1' || 'permission2')
Но не работает; (
laravel laravel-blade blade
Ответы Ответ 1 · рейтинг 44 · tommy
Вы можете использовать фасад Gate:
@if(Gate::check('permission1') || Gate::check('permission2'))
@endif
Ответ 2 · рейтинг 41 · Jasper Briers
Директива @canany blade добавлена в Laravel v.5.6.23 24 мая 2018 г.
Использование:
@canany(['edit posts', 'delete posts'])
<div class="actions">
@can('edit posts')
<button>Edit post</button>
@endcan
@can('delete posts')
<button>Delete post</button>
@endcan
</div>
@endcanany
Ответ 3 · рейтинг 8 · SimonDepelchin
Я добавил эту директиву в свое приложение Laravel 5.4, которое позволяет мне использовать новую директиву @canany('write|delete') в моих представлениях лезвий.
// AppServiceProvider.php@boot()
Blade::directive('canany', function ($arguments) {
list($permissions, $guard) = explode(',', $arguments.',');
$permissions = explode('|', str_replace('\'', '', $permissions));
$expression = "<?php if(auth({$guard})->check() && ( false";
foreach ($permissions as $permission) {
$expression .= " || auth({$guard})->user()->can('{$permission}')";
}
return $expression . ")): ?>";
});
Blade::directive('endcanany', function () {
return '<?php endif; ?>';
});
Пример в виде лезвия:
@canany('write|create')
...
@endcanany
Вот документ по расширению Blade на 5.4
Ответ 4 · рейтинг 3 · jfadich
Вы можете звонить @can несколько раз.
@if (@can ('разрешение1') || @can ('разрешение2'))
@if( Gate::check('permission1') || Gate::check('permission2') )
Ответ 5 · рейтинг 2 · dilbadil
Используйте метод can на Authenticated User,
@if ( Auth::user()->can('permission1', App\Model::class) || Auth::user()->can('permission2', App\Model::class) )
@endif
Ответ 6 · рейтинг 2 · dipenparmar12
Если вы используете laravel spatie package, вы можете легко сделать это следующим образом ..
Использование метода hasAnyPermission ()
@if(auth()->user()->hasAnyPermission(['permission1','permission2']))
// statements
@endif
Ответ 7 · MUHAMMAD USMAN
@if (Gate :: check ('manage-users') || Gate :: check ('add-new-user')) Управление пользователями
<li>
<a href="{{url('/back/users')}}">
<i class="feather icon-users"></i>
<span class="menu-item" data-i18n="users">Manage Users</span>
</a>
</li>
@endif
Ответ 8 · рейтинг -1 · iwan
просто используйте @canany (['permision1', 'permision2'])
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow .