未找到Laravel和Laratrust命名空间

时间:2017-01-04 18:32:20

标签: namespaces laravel-5.3

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

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();   
    }
}

我的Permission目录中有RoleApp个文件,分别包含以下内容:

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也是为了看。为什么看到一个而不是另一个?

2 个答案:

答案 0 :(得分:5)

Laraturst在最新版本(5.0)中为 LaratrustRole LaratrustPermission 更改了名称空间 正确的命名空间将是

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
{
    //
}

答案 1 :(得分:0)

您应该更新Laratrust 5.0文档。 用于角色的Laratrust 5名称空间现在为*

  

Laratrust \ Models \ LaratrustRole

权限的名称空间是:

  

Laratrust \ Models \ LaratrustPermission

更新您的应用\角色

<?php

namespace App;

use Laratrust\Models\LaratrustRole;

class Role extends LaratrustRole
{
}

更新您的 APP \权限     

namespace App;

use Laratrust\Models\LaratrustRole;

class Role extends LaratrustRole
{
}