複数の機能をチェックするために、@ canを使用して句(OR、AND)を使用する方法が見つかりませんでした...
私は試した:
@can(['permission1', 'permission2'])
@can('permission1' or 'permission2')
@can('permission1' || 'permission2')
しかし、動作しません;(
Gateファサードを使用できます。
@if(Gate::check('permission1') || Gate::check('permission2'))
@endif
@cananyブレードディレクティブが Laravel v.5.6.2 に追加されました(2018年5月24日)
使用法:
@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
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
@can
を複数回呼び出すことができます。
@if(@can( 'permission1')|| @can( 'permission2'))
@if( Gate::check('permission1') || Gate::check('permission2') )
Authenticated User
でcan
メソッドを使用します。
@if ( Auth::user()->can('permission1', App\Model::class) || Auth::user()->can('permission2', App\Model::class) )
@endif