【发布时间】:2019-12-06 21:17:25
【问题描述】:
我正在 Laravel 中开发一个 Role-Permission 包,我想使用这个包;
问题是当我在自己的包中安装这个包时,我无法使用主项目中的某些功能。例如“HasRoles”
我的包 composer.json 文件
"require": {
"spatie/laravel-permission": "dev-master"
},
"autoload": {
"psr-4": {
"Modul\\Permission\\": "src"
}
},
"extra": {
"laravel": {
"providers": [
"Spatie\\Permission\\PermissionServiceProvider"
]
}
}
主项目作曲家文件
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.1.3",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.8.*",
"laravel/tinker": "^1.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^7.5"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Modul\\Permission\\": "packages/modul/permission/src"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
}
}
还有我的用户模型;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use Notifiable;
use HasRoles;
当我服务它时显示此错误消息...
Symfony\Component\Debug\Exception\FatalErrorException (E_UNKNOWN) 未找到特征“Spatie\Permission\Traits\HasRoles”
我在这里做错了什么?
【问题讨论】:
-
你安装了这个包吗?如果您只是手动更改了
composer.json,那么您需要为 Composer 执行composer update以将其安装到您的供应商文件夹中。 -
我使用“composer 需要 spatie/laravel-permission” 命令
-
您是否正在为使用您的包的 laravel 项目或需要
vendor/autoload.php的某些脚本提供服务? -
也许在作曲家转储其自动加载文件之前发生了一些事情。手动尝试
composer dump-autoload。只是为了确定 -
@EmreCanbulat 您项目的其中一个包已更新。您需要为您的项目提取这些更新。为您的项目执行
composer update yourpackage/name(或一般composer update),为项目带来新的变化和新的依赖。
标签: php laravel laravel-5 package composer-php