Laravel 将数组传递给接受各种参数的函数

Laravel 将数组传递给接受各种参数的函数,laravel,Laravel,我有两个功能: public function handle($request, Closure $next, ...$roles) 及 我调用第一个函数检查用户是否具有所需的权限: $this->middleware('roles:request,delete'); $roles变量已正确创建,并且具有一个包含request和delete值的数组。在下一步中,我将调用函数hasAnyRole,在这里我可以再次传递各种参数,但当我使用已创建的数组调用它时,它将被解释为on值: $req

我有两个功能:

public function handle($request, Closure $next, ...$roles)

我调用第一个函数检查用户是否具有所需的权限:

$this->middleware('roles:request,delete');
$roles变量已正确创建,并且具有一个包含request和delete值的数组。在下一步中,我将调用函数hasAnyRole,在这里我可以再次传递各种参数,但当我使用已创建的数组调用它时,它将被解释为on值:

$request->user()->hasAnyRole($roles) || !$roles)
我也尝试过使用内爆命令,但仍然收到一个只有一个值的数组:

array:1 [▼
  0 => "request,delete"
]
任何人都知道我如何将数组转换为这样的形式:

hasAnyRole("delete", "request")
谢谢
Stephan

您正在将数组传递给
hasAnyRole()
,它将数组作为参数,这意味着您可以传递数组值列表。 假设你的函数是这样的

hasAnyRole($roles){
....
}
但是您试图做的是
handAnyRole($role1,$role2,…)
,这是不可能的。你需要这样做

hasAnyRole($roles){
foreach($roles作为$role){
如果(多切克($role)){
...
} 
}
}

您可以使用

$roles="request,delete";

$roles_array=explode(',',$roles);
然后,对于作为单独参数的pass,您可以这样做

hasAnyRole(...$new_roles); //hasAnyRole('request','delete',and more);

问题是我也在从刀片调用hasAnyRole函数:hasAnyRole(“delete”,“request”)来显示可用的菜单OK,我认为技巧是使用[]调用刀片,然后不使用树点调用函数。一切都应该是这样。谢谢你找到解决办法了吗?
hasAnyRole(...$new_roles); //hasAnyRole('request','delete',and more);