scripts - Laravel 5.1 @can, como usar la cláusula OR
laravel section yield (5)
No encontré cómo usar una cláusula (OR, AND) en vista con @can, para verificar múltiples habilidades ...
Lo intenté:
@can([''permission1'', ''permission2''])
@can(''permission1'' or ''permission2'')
@can(''permission1'' || ''permission2'')
Pero no trabajes;
He agregado esta directiva en mi aplicación Laravel 5.4 que me permite usar una nueva @canany(''write|delete'')
en mis vistas de blade.
// 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; ?>'';
});
Ejemplo en vista de blade:
@canany(''write|create'')
...
@endcanany
Aquí está el documento para extender Blade en 5.4
La directiva @canany blade se agregó a Laravel v.5.6.23 el 24 de mayo de 2018
Uso:
@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
Puedes llamar a @can
varias veces.
@if (@can (''permission1'') || @can (''permission2''))
@if( Gate::check(''permission1'') || Gate::check(''permission2'') )
Puedes usar la fachada de la puerta:
@if(Gate::check(''permission1'') || Gate::check(''permission2''))
@endif
Utilice el método can
en Authenticated User
,
@if ( Auth::user()->can(''permission1'', App/Model::class) || Auth::user()->can(''permission2'', App/Model::class) )
@endif