我modules
在我的 Laravel 应用程序中创建了一个文件夹。到目前为止有两个模块,但我只专注于core
这里。
我正在使用 Confide 和 Entrust 来构建用户功能,如下所示:
namespace App\Modules\Core;
use Zizaco\Confide\ConfideUser;
use Zizaco\Entrust\HasRole;
class User extends ConfideUser {
use HasRole;
}
和权限:
namespace App\Modules\Core;
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
{
}
和角色:
namespace App\Modules\Core;
use Zizaco\Entrust\EntrustRole;
class Role extends EntrustRole
{
}
我的 Composer.json 自动加载内容如下:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/modules"
],
"psr-0": {
"App\\Modules\\": "modules/"
}
},
我把 psr-0 的东西放在那里,因为我无法让它们工作。尽管我运行 composer 时输出的自动加载文件似乎有希望的条目,但它们仍然不起作用。
数据库已迁移,现在我正在尝试运行数据库种子。我的播种脚本如下:
use App\Modules\Core\User;
use App\Modules\Core\Role;
use App\Modules\Core\Permission;
class UserTablesSeeder extends Seeder {
public function run()
{
DB::table('users')->insert(array(
'email' => 'xxx',
'first_name' => 'xxx',
'password' => 'xxxx',
'active' => 1
));
$admin = new Role;
$admin->name = 'Admin';
$admin->save();
$manageUsers = new Permission;
$manageUsers->name = 'manage_standard_users';
$manageUsers->display_name = 'Manage Users';
$manageUsers->save();
$admin->perms()->sync(array($manageUsers->id));
$user = User::where('email','=','xxx')->first();
$user->attachRole($admin);
}
}
但是当我运行时php artisan db:seed
出现错误:
PHP Fatal error: Class 'Permission' not found in /home/wedding/quincy/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php on line 604
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'Permission' not found","file":"\/home\/wedding\/quincy\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Eloquent\/Model.php","line":604}}
如果我摆脱了所有的命名空间,一切都会很好,但我认为我应该保留命名空间,因为我正在尝试创建模块化。
我已经运行了composer dump-autoload
,并且install
当我添加了 psr-0 条目时。所以我不确定我还需要做什么。我对作曲家很陌生,所以在这一点上,我不知道问题出在哪里。
提前致谢。