namespaces - 找不到 Laravel 和 Laratrust 命名空间

标签 namespaces laravel-5.3

总的来说,我是 Laravel 的新手,我正在尝试使用 Laratrust 附加组件(用户角色和权限附加组件)设置播种机。当我运行 php artisan db:seed 时,我收到一条错误消息,提示 Class 'App\Role' not found 并且无法弄清楚为什么它看到的是 Permissions 类而不是角色类。我的播种机看起来像这样:

use Illuminate\Database\Seeder;
use App\Permission;
use App\Role;

class LaratrustSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $owner = new Role();
        $owner->name         = 'owner';
        $owner->display_name = 'Project Owner';
        $owner->description  = 'User is the owner of a given project';
        $owner->save();   
    }
}

我的 App 目录中有 PermissionRole 文件,分别包含以下内容:

namespace App;
use Laratrust\LaratrustPermission;

class Permission extends LaratrustPermission
{
    //
}

namespace App;
use Laratrust\LaratrustRole;

class Role extends LaratrustRole
{
    //
}

我检查过我的 laratrust.php 配置文件有 'role' => 'App\Role''permission' => 'App\Permission' 设置。我重新运行 composer dump-autoload 也只是为了看看。为什么它看到一个而不是另一个?

最佳答案

Laraturst 在最新版本 (5.0) 中更改了 namespaceLaratrustRoleLaratrustPermission 正确的命名空间应该是

Laratrust\Models\LaratrustRole;
Laratrust\Models\LaratrustPermission;

所以你应该把你的代码改成

应用\角色

<?php

namespace App;

use Laratrust\Models\LaratrustRole;

class Role extends LaratrustRole
{
    //
}

app\Permission

<?php

namespace App;

use Laratrust\Models\LaratrustPermission;

class Permission extends LaratrustPermission
{
    //
}

关于namespaces - 找不到 Laravel 和 Laratrust 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41470897/

相关文章:

namespaces - kubernetes - 动态更改 RC 的命名空间

Laravel 5.3 升级 - BroadcastServiceProvider 错误

php - Laravel 队列 :listen queue:work not working

PHP 命名空间,我只是不明白

java - 在不过分冗长的情况下消除类歧义

php - Mustache.php 从命名空间内启动 - include() : failed to open stream

C#命名空间问题: Must avoid namespace containing any class name overlap?

laravel-5.3 - RouteCollection.php 第 521 行中的 MethodNotAllowedHttpException

javascript - 对数据表进行排序

php - curl 错误 60 : SSL certificate in Laravel 5. 3