我想问一下 Laravel BackPack Permission Manager 中的 Seeding,
我正在尝试默认的背包权限管理器配置,并尝试使用虚拟数据为其播种。
这是我的角色和权限播种机方法:
public function run()
{
// Reset cached roles and permissions
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
// create permissions
Permission::create(['name' => 'view members']);
Permission::create(['name' => 'add members']);
Permission::create(['name' => 'edit members']);
Permission::create(['name' => 'delete members']);
Role::create(['name' => 'super-admin'])
->givePermissionTo(Permission::all());
Role::create(['name' => 'admin'])
->givePermissionTo('add members');
}
这是我的用户播种器方法:
public function run()
{
factory(User::class)->create([
'name' => 'Arianna',
'email' => 'arianna@example.com'
])->assignRole('super-admin');
}
这些播种机很好,但我意识到用户 CRUD 界面没有正确显示角色
用户角色显示为“-”,
角色显示为 -
当我检查数据库时,model_has_roles 将 App\User 显示为模型类型
应用\用户模型_类型:
我确定 model_type 应该是 App\Models\BackpackUser ,所以我现在再次尝试使用 BackpackUser 类进行播种
现在我遇到了不同的问题,BackpackUser 没有任何角色,因为角色需要在“背包”守卫中才能分配给 BackpackUser
Spatie\Permission\Exceptions\RoleDoesNotExist : There is no role named `super-admin`.
at .\vendor\spatie\laravel-permission\src\Exceptions\RoleDoesNotExist.php:11
7| class RoleDoesNotExist extends InvalidArgumentException
8| {
9| public static function named(string $roleName)
10| {
> 11| return new static("There is no role named `{$roleName}`.");
12| }
13|
14| public static function withId(int $roleId)
15| {
Exception trace:
1 Spatie\Permission\Exceptions\RoleDoesNotExist::named("super-admin")
.\vendor\spatie\laravel-permission\src\Models\Role.php:91
2 Spatie\Permission\Models\Role::findByName("super-admin", "backpack")
.\vendor\spatie\laravel-permission\src\Traits\HasRoles.php:270
我的选择是什么?为什么我不能用默认配置正常播种?
守着星空守着你