gpt4 book ai didi

php - 将数组传递给laravel中的中间件

转载 作者:行者123 更新时间:2023-12-03 23:24:42 24 4
gpt4 key购买 nike

我在名为rolMiddleware的中间件中得到了这个句柄:

public function handle($request, Closure $next, $roles)
{
//dd($request->user());
foreach ($roles as $rol) {
if ($request->user()->getTipoUsuario($request->user()->tipo_usuario_id)->getNombreTipoUsuario() == $rol) {
return $next($request);
}
}
abort(403, "¡No hay autorizacion!");
}

但是$ roles是一个数组,这是我使用中间件的路线:
Route::get('/mid', ['middleware' => 'roles:super admin', function () {
return "done";
}]);

而给我的错误是:
ErrorException in RolMiddleware.php line 22:
Invalid argument supplied for foreach()

您可能不需要使用数组,因为我只在 super 管理员中使用它,对于该路由,我只需要 super 管理员,但是有些路由可能适用于 super 管理员和某个区域的管理员。

最佳答案

在laravel中,您可以使用逗号,分隔要传递给中间件的参数,如下所示:

Route::get('/mid', ['middleware' => 'roles:super,admin', function () {
// ^ note this
return "done";
}]);

请注意,这不会将参数作为数组发送,因此除非您将传递的参数用作 ellipsis parameters,否则不能循环 $roles,如下所示:
public function handle($request, Closure $next, ...$roles)

相反,您将需要为每个角色使用一个参数:
public function handle($request, Closure $next, $role1, $role2) // .... and so on

关于php - 将数组传递给laravel中的中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43685610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com