LARAVEL - 在门上设置多个规则

时间:2021-03-31 18:13:39

标签: laravel

所以我想返回能够访问 view-inv 的 id_level 1,2 和 3,但结果证明它只是第一个有效的 return $user->id_level === 1;,有什么可能的方法吗?

public function boot()
{
    $this->registerPolicies();

    Gate::define('view-inv', function($user){
        return $user->id_level === 1;
        return $user->id_level === 2;
        return $user->id_level === 3;
    });
}

我的控制器

 public function index()
{
    if (Gate::allows('view-inv')) {
        $inventaris = Inventaris::all();
        return view('index', compact('inventaris'));
    }elseif (Gate::denies('view-inv')) {
        return view('/home');
    } else {
        return view('/home');
    }


}

1 个答案:

答案 0 :(得分:1)

你不能从函数中返回多次,所以基本上你可以检查 $user->id_level 是否“在数组中”获得许可

    Gate::define('view-inv', function($user){
    return in_array($user->id_level, [1, 2, 3]);
});

您可以将数组定义为常量,也可以像示例中那样对其进行硬编码

函数表示,如果 id_level 的值与数组中的某个值相等,则返回 true,否则返回 false