【发布时间】:2019-02-05 08:17:56
【问题描述】:
我目前正在尝试开发一个自定义 Laravel 包,但在开始时遇到了一些问题。
这是我的文件结构:
-packages
- oliverbusk
-invoiceconverter
-src
-controllers
- InvoiceconverterController.php
-resources
- views
- home.blade.php
-routes
- web.php
- InvoiceConverterServiceProvider.php
如您所见,我的文件位于src/ 文件夹中。
首先,这是我的composer.json,在我的包文件夹中:
"extra": {
"laravel": {
"providers": [
"Oliverbusk\\Invoiceconverter\\InvoiceConverterServiceProvider"
]
}
}
然后我在我的项目中自动加载了这个 main composer.json 文件:
"require": {
//....
"oliverbusk/invoiceconverter": "dev-feature-package"
},
"autoload": {
[...]
"psr-4": {
"App\\": "app/",
"Oliverbusk\\Invoiceconverter\\": "packages/oliverbusk/invoiceconverter"
}
},
这是我的服务提供者文件:
namespace Oliverbusk\Invoiceconverter;
use Illuminate\Support\ServiceProvider;
class InvoiceConverterServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//Load our routes
$this->loadRoutesFrom(__DIR__ . '/routes/web.php');
//Load our views
$this->loadViewsFrom(__DIR__ . '/resources/views', 'invoiceconverter');
}
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
}
还有我的控制器文件,位于controllers/:
namespace Oliverbusk\Invoiceconverter\Controllers;
use App\Http\Controllers\Controller;
class InvoiceconverterController extends Controller
{
public function index()
{
return view('invoiceconverter::home');
}
}
最后,我的routes/web.php 文件:
Route::group(['namespace' => 'Oliverbusk\InvoiceConverter\Controllers'], function () {
Route::get('invoiceconverter', 'InvoiceconverterController@index');
});
错误:
类 Oliverbusk\InvoiceConverter\Controllers\InvoiceconverterController 不存在
奖金信息:
Composer 转储自动加载显示如下:
Discovered Package: oliverbusk/invoiceconverter
- 我已经尝试使用
php artisan:cache:clear清除缓存。 - 我也试过
composer update
【问题讨论】:
-
尝试发布代码
php artisan vendor:publish -
我不确定它是否会有所不同,但您应该确保您的
controllers目录大写以匹配命名空间,因此它应该是Controllers。不过也可能是这样。你的类名和它所在的文件也是如此,尽量保持相同的大小写。 -
@urfusion - 这个包还没有发布任何东西。
-
@Jonathon - 刚刚尝试将文件夹名称更改为
Controllers- 无效。 -
您尝试更改类名以匹配文件名,还是更改文件名以匹配类名?