我没有找到如何在@can视图中使用子句(OR,AND)来检查多个异能......
我试过了:
@can(['permission1', 'permission2']) @can('permission1' or 'permission2') @can('permission1' || 'permission2')
但是不行;(
您可以使用门面:
@if(Gate::check('permission1') || Gate::check('permission2')) @endif
@canany刀片指令已于2018年5月24日添加到Laravel v.5.6.23中
用法:
@canany(['edit posts', 'delete posts'])@can('edit posts') @endcan @can('delete posts') @endcan@endcanany
我在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 = "check() && ( false"; foreach ($permissions as $permission) { $expression .= " || auth({$guard})->user()->can('{$permission}')"; } return $expression . ")): ?>"; }); Blade::directive('endcanany', function () { return ''; });
刀片视图中的示例:
@canany('write|create') ... @endcanany
这是在5.4上扩展Blade的文档