Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Laravel 5.1 @can, как использовать предложение OR

Автор вопроса: Marcaum54Ответов: 8

Я не нашел, как использовать предложение (ИЛИ, И) в поле зрения с @can для проверки нескольких возможностей ...

Я пытался:

@can(['permission1', 'permission2'])
@can('permission1' or 'permission2')
@can('permission1' || 'permission2')

Но не работает; (

laravellaravel-bladeblade

Ответы

Ответ 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.

Похожие материалы