【发布时间】:2020-04-12 23:48:34
【问题描述】:
我正在使用 Laravel 5.8、PHP 7.3.3。安装 JosephSilber/bouncer 包来管理角色、权限等。
我试过这个,从样品开始,没什么特别的:
Bouncer::allow('superuser')->to('create-account'); //works, creates role 'superuser', creates ability 'create-account'
Bouncer::allow('employer')->to('create-employee'); //works
$john = App\User::where('email','john@gmail.com')->first(); //works, finds John
$john->assign('superuser'); //works, John is now a user user
$john->can('create-account'); // works, returns true
$john->can('create-employee'); // works, returns false
$boolean = $john->isAn('superuser') ;
ERROR=> array_key_exists(): 第一个参数应该是字符串或整数
不知道为什么我会收到此错误。
的类似问题User::whereIs('superuser')->get() etc
我尝试调试,问题似乎是在 BaseClipboard.php 中调用以下行时出现的。它正在这个调用中发生,到此我可以验证传入的参数。
$authority->roles()->get([
'name', Models::role()->getQualifiedKeyName()
])
但是我无法克服这一点。感谢任何帮助。
无法弄清楚如何获得堆栈跟踪的干净转储。但这里是复制和粘贴。我认为只有最后几个会引起人们的兴趣
错误异常
…\vendor\laravel\framework\src\Illuminate\Support\Collection.php2029
51
array_key_exists
…\vendor\laravel\framework\src\Illuminate\Support\Collection.php2029
50
Illuminate\Support\Collection offsetExists
…\vendor\laravel\framework\src\Illuminate\Support\Collection.php876
49
Illuminate\Support\Collection 获取
…\vendor\silber\bouncer\src\BaseClipboard.php82
48
Silber\Bouncer\BaseClipboard getRolesLookup
...\vendor\silber\bouncer\src\CachedClipboard.php234
47
Silber\Bouncer\CachedClipboard Silber\Bouncer{关闭}
…\vendor\silber\bouncer\src\CachedClipboard.php248
46
Silber\Bouncer\CachedClipboard 搜索
…\vendor\silber\bouncer\src\CachedClipboard.php235
45
Silber\Bouncer\CachedClipboard getRolesLookup
…\vendor\silber\bouncer\src\BaseClipboard.php57
44
Silber\Bouncer\BaseClipboard countMatchingRoles
…\vendor\silber\bouncer\src\BaseClipboard.php37
43
Silber\Bouncer\BaseClipboard checkRole
…\vendor\silber\bouncer\src\Database\Concerns\HasRoles.php92
42
应用\用户是An
…\routes\web.php379
41
App\Providers\RouteServiceProvider {关闭}
…\vendor\laravel\framework\src\Illuminate\Routing\Route.php205
【问题讨论】:
-
你能发布完整的堆栈跟踪吗?
-
我已经编辑了我的 OP 并添加了堆栈跟踪。完整的堆栈跟踪超过 300 行。只是想我会为你缩小范围。
-
解决了吗??
-
没有。我停止调用该函数并解决它。