将数组传递给带有各种参数的函数

时间:2019-10-05 18:39:03

标签: laravel

我有两个功能:

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")

谢谢 斯蒂芬

2 个答案:

答案 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);