当前位置:  开发笔记 > 编程语言 > 正文

Laravel 5.1 @can,如何使用OR子句

如何解决《Laravel5.1@can,如何使用OR子句》经验,为你挑选了3个好方法。

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

我试过了:

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

但是不行;(



1> tommy..:

您可以使用门面:

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

@endif



2> Jasper Brier..:

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

用法:

@canany(['edit posts', 'delete posts'])
    
@can('edit posts') @endcan @can('delete posts') @endcan
@endcanany



3> 小智..:

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

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有