Ответ 1
Вы можете использовать фасад Gate:
@if(Gate::check('permission1') || Gate::check('permission2'))
@endif
Я не нашел, как использовать предложение (OR, AND) в поле зрения @can для проверки нескольких способностей...
Я пробовал:
@can(['permission1', 'permission2'])
@can('permission1' or 'permission2')
@can('permission1' || 'permission2')
Но не работает, (
Вы можете использовать фасад Gate:
@if(Gate::check('permission1') || Gate::check('permission2'))
@endif
Я добавил эту директиву в свое приложение Laravel 5.4, которое позволяет мне использовать новую директиву @canany('write|delete')
в моих видах.
// [email protected]()
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
Вы можете вызвать @can
несколько раз.
@if (@can ('permission1') || @can ('permission2'))
@if( Gate::check('permission1') || Gate::check('permission2') )