40

我没有找到如何使用@can 视图中的子句(OR,AND)来检查多种能力......

我试过:

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

但不工作;(

4

8 回答 8

48

你可以使用 Gate 门面:

@if(Gate::check('permission1') || Gate::check('permission2'))

@endif
于 2015-12-09T21:07:45.380 回答
47

@canany 刀片指令已于2018 年 5 月 24 日添加到Laravel v.5.6.23

用法:

@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
于 2018-07-19T20:23:42.710 回答
8

我在我的 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

这是在 5.4 上扩展 Blade 的文档

于 2017-08-16T10:26:43.083 回答
3

您可以@can多次调用。

@if(@can('permission1') || @can('permission2'))

@if( Gate::check('permission1') || Gate::check('permission2') )
于 2015-12-09T20:56:52.773 回答
2

使用can方法Authenticated User

@if ( Auth::user()->can('permission1', App\Model::class) || Auth::user()->can('permission2',  App\Model::class) )

@endif
于 2019-03-10T02:32:52.433 回答
2

如果您使用的是 laravel spatie package,那么您可以通过以下方式轻松完成..

使用 hasAnyPermission() 方法

@if(auth()->user()->hasAnyPermission(['permission1','permission2']))
   // statements 
@endif

于 2020-03-06T15:51:15.900 回答
0

@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>

@万一

于 2021-01-19T11:53:26.557 回答
-1

只需使用 @canany(['permision1','permision2'])

于 2021-02-02T12:49:33.417 回答