未创建实例 Spatie 角色和权限
Posted
技术标签:
【中文标题】未创建实例 Spatie 角色和权限【英文标题】:Instance not created Spatie Role and Permission 【发布时间】:2021-03-19 12:00:15 【问题描述】:我创建了一个提供程序并链接了存储库,但我得到了错误:
异常:“Illuminate\Contracts\Container\BindingResolutionException” 文件:“../vendor/laravel/framework/src/Illuminate/Container/Container.php” 线路:1038 消息:“目标 [Illuminate\Database\Eloquent\Model] 在构建 [App\Http\Controllers\Api\V1\User\RoleController, App\Repositories\Model\RoleRepository] 时不可实例化。” 追踪:[,…]
命名空间:Spatie\Permission\Models\Role;
和 Spatie\Permission\Models\Permission;
RepositoryServiceProvider:
class RepositoryServiceProvider extends ServiceProvider
// ...
$this->app->bind(ModelRepositoryInterface::class, function()
return new PermissionRepository(new Permission);
);
// ...
在调试过程中,安装了dd(new Role)
。并得到了这个错误:
“在 null 上调用成员函数 connection()”
有什么问题?
【问题讨论】:
【参考方案1】:由于我使用相同的接口,但不同的类(控制器)需要这样绑定:
$this->app->when(RoleController::class)
->needs(ModelRepositoryInterface::class)
->give(function ()
return new RoleRepository(new Role);
);
$this->app->when(PermissionController::class)
->needs(ModelRepositoryInterface::class)
->give(function ()
return new PermissionRepository(new Permission);
);
见documentation。
【讨论】:
以上是关于未创建实例 Spatie 角色和权限的主要内容,如果未能解决你的问题,请参考以下文章
如何在登录具有 Spatie 的 Laravel 权限的用户之前检查用户角色?
我如何在 laravel 中为 spatie 包(ACL 管理)中的其他角色分配用户列表权限?
使用带有 spatie 包的 Laravel 8 尝试获取具有角色问题的用户列表调用未定义的方法 App\Models\User::hasAllRoles()