gpt4 book ai didi

PHP Laravel - 类 [controllername] Controller 不存在

转载 作者:搜寻专家 更新时间:2023-10-31 21:20:25 25 4
gpt4 key购买 nike

我目前正在尝试开发一个自定义的 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"
]
}
}

然后我在我的项目 ma​​in 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()
{
//
}
}

还有我的 Controller 文件,位于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');
});

错误:

Class Oliverbusk\InvoiceConverter\Controllers\InvoiceconverterController does not exist

奖金信息:

Composer dump autoload 显示以下内容:

Discovered Package: oliverbusk/invoiceconverter
  • 我已经尝试使用 php artisan:cache:clear 清除缓存。
  • 我也试过 composer update

最佳答案

您路由中的命名空间与您实际使用的命名空间不匹配。

Route::group(['namespace' => 'Oliverbusk\InvoiceConverter\Controllers'], function () {
Route::get('invoiceconverter', 'InvoiceconverterController@index');
});

更改为

Route::group(['namespace' => 'Oliverbusk\Invoiceconverter\Controllers'], function () 
{
Route::get('invoiceconverter', 'InvoiceconverterController@index');
});

看看是否有帮助。

我还建议您将所有代码重构为大写的 InvoiceConverter,因为它们是两个单独的词。

关于PHP Laravel - 类 [controllername] Controller 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52096131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com