我有两个功能:
public function handle($request, Closure $next, ...$roles)
和
public function hasAnyRole(...$roles){
我调用第一个函数来检查用户是否具有所需的权限:
$this->middleware('roles:request,delete');
$ roles变量已正确创建,并具有一个由值request和delete组成的数组。在下一步中,我将调用hasAnyRole函数,在这里我可以再次传递各种参数,但是当我使用已创建的数组调用它时,它将被解释为值:
$request->user()->hasAnyRole($roles) || !$roles)
我也用implode命令尝试过,但是我仍然收到一个只有一个值的数组:
array:1 [▼
0 => "request,delete"
]
任何人都知道如何将数组转换为这样的数组:
hasAnyRole("delete", "request")
谢谢 斯蒂芬
答案 0 :(得分:0)
您正在将数组传递到以数组为参数的device
,这意味着您可以传递数组值列表。
假设您的功能是这样的
hasAnyRole()
但是您要尝试的是 hasAnyRole($roles){
....
}
,这是不可能的。您将需要执行以下操作
handAnyRole($role1, $role2, ...)
答案 1 :(得分:0)
您可以使用
将$ roles转换为数组$roles="request,delete";
$roles_array=explode(',',$roles);
然后作为单独的参数传递,您可以这样
hasAnyRole(...$new_roles); //hasAnyRole('request','delete',and more);