wake-up-neo.com

Laravel 5.1 @can, wie benutze OR Klausel

Ich habe nicht gefunden, wie eine Klausel (ODER, UND) in Ansicht von @can verwendet werden kann, um mehrere Fähigkeiten zu überprüfen ...

Ich habe es versucht:

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

Aber arbeite nicht; (

32
Marcaum54

Sie können die Torfassade verwenden:

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

@endif
30
tommy

Die @ canany Blade-Direktive wurde am 24. Mai 2018 zu Laravel v.5.6.2 hinzugefügt

Verwendung:

@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
15
Jasper Briers

Ich habe diese Anweisung in meine App Laravel 5.4) eingefügt, mit der ich eine neue Anweisung @canany('write|delete') in meinen Blade-Ansichten verwenden kann.

// [email protected]()

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; ?>';
});

Beispiel in der Blade-Ansicht:

@canany('write|create')
    ...
@endcanany

Hier ist das Dokument zum Erweitern von Blade auf 5.4

5
SimonDepelchin

Du kannst anrufen @can mehrmals.

@if (@can ('Erlaubnis1') || @can ('Erlaubnis2'))

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

Verwenden Sie die Methode can für Authenticated User,

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

@endif
1
dilbadil

Wenn Sie laravel spatie package, dann kannst du es einfach machen, indem du folgendem folgst ..

Verwenden der Methode hasAnyPermission ()

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

0
Dipen