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")
谢谢斯蒂芬
解决方案
您正在传递以hasAnyRole()
数组作为参数的数组,这意味着您可以传递数组值列表。假设你的功能是这样的
hasAnyRole($roles){
....
}
但是你想要做的是handAnyRole($role1, $role2, ...)
不可能的。你需要做这样的事情
hasAnyRole($roles){
foreach($roles as $role){
if(doCheck($role)){
...
}
}
}
推荐阅读
- google-app-engine - 使用 Python 在 Google App Engine Standard 和 Cloud Endpoints Frameworks 上配置 Auth0 身份验证
- java - 无法解密:key=admin.password(Spring 属性),仅在 Eclipse 设置中出错
- python - 如何使用蒙特卡洛方法找到值的不确定性?
- ruby-on-rails - 如何从Ruby中的单词数组中获取所有对角线?
- unity3d - Admob 广告突然停止在应用中显示
- optimization - 多目标优化中的平等和不平等约束?
- architecture - 以数据为中心的架构和客户端服务器架构有什么区别?
- jqplot - jqplot Y轴重新缩放
- java - Swagger - 如何使用相同的 http 方法和路径但内容类型不同的多个操作?
- sql - 如何遍历日期、30 次以查找时间点的历史信息?