我正在尝试从供应商文件中将一个自定义程序包(lapisraro/autocrud
)加载到我的项目中,但出现此错误:
“找不到类'Lapisraro \ Autocrud \ AutocrudServiceProvider'”
这是我的应用程序的composer.json
:
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.1.3",
"fideloper/proxy": "^4.0",
"lapisraro/autocrud": "dev-master",
"laravel/framework": "5.8.*",
"laravel/tinker": "^1.0"
},
"require-dev": {
"beyondcode/laravel-dump-server": "^1.0",
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"jeroen-g/laravel-packager": "^2.2",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^7.5"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "app/",
"Lapisraro\\Autocrud\\": "/lapisraro/autocrud/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 --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
}
}
这是我在vendor / lapisraro / autocrud中的composer.json
{
"name": "lapisraro/autocrud",
"description": "Gerador de CRUD padrão da LapisRaro",
"license": "MIT",
"type": "library",
"authors": [
{
"name": "Lucas Campos",
"email": "lucasblind@gmail.com"
}
],
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"Lapisraro\\Autocrud\\": "src/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/",
"Lapisraro\\Autocrud\\": "src/"
}
},
"extra":
{
"laravel":
{
"providers": [ "Lapisraro\\autocrud\\AutocrudServiceProvider" ]
}
}
}
这是我的服务提供商
<?php
// MyVendor\contactform\src\ContactFormServiceProvider.php
namespace Lapisraro\autocrud;
use Illuminate\Support\ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
use Yajra\DataTables\Facades\DataTables;
//use Intervention\Image\Facades\Image;
//use App\Models\Image as ImgModel;
class AutocrudServiceProvider extends ServiceProvider {
/**
* boot
*
* Initialize provider
*
* @return void
*/
public function boot()
{
$this->loadRoutesFrom(__DIR__.'/routes/web.php');
$this->loadViewsFrom(__DIR__.'/resources/views', 'autocrud');
}
/**
* register
*
* Register the service provider for the dependency.
*
* @return void
*/
public function register()
{
$this->loadRoutesFrom(__DIR__.'/routes/web.php');
$this->loadViewsFrom(__DIR__.'/resources/views', 'autocrud');
//App::register(AutocrudServiceProvider::class);
}
}
?>
我还尝试将其加载到config / app.php中:
Lapisraro\Autocrud\AutocrudServiceProvider::class,
的链接
答案 0 :(得分:0)
与其在应用程序的PSR-4
中自动加载composer.json
,不如:
"autoload": {
"psr-4": {
"App\\": "app/",
"Lapisraro\\Autocrud\\": "/lapisraro/autocrud/src"
},
...像这样将本地包添加到repositories
:
"repositories": [
{
"type": "path",
"url": "/lapisraro/autocrud"
}
]
随后运行composer update
或composer dump-autoload
。
答案 1 :(得分:0)
我放弃了,并试图用laravel-packager来制作,但是也没有用, 但是我发现了这部视频https://www.youtube.com/watch?v=H-euNqEKACA,现在可以正常播放了。
问题出在作曲家的文件和文件夹级别。
感谢您的帮助!