所以我想返回能够访问 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');
}
}
答案 0 :(得分:1)
你不能从函数中返回多次,所以基本上你可以检查 $user->id_level 是否“在数组中”获得许可
Gate::define('view-inv', function($user){
return in_array($user->id_level, [1, 2, 3]);
});
您可以将数组定义为常量,也可以像示例中那样对其进行硬编码
函数表示,如果 id_level 的值与数组中的某个值相等,则返回 true,否则返回 false