Laravel包开发-目标类[ControllerName]不存在



我正在学习如何创建laravel包的教程。

我使用的是Laravel v8.42.1(PHP v7.4.3(和jetstream包。

我一直在为我的包创建一个控制器,当我试图通过laraval应用程序(<基本url/游乐场(连接到我的url时,我总是会遇到以下错误:

Target class [TestVendorTestPackageHttpControllersPlaygroundController] does not exist. 

TestVendor\TestPackage\src\routes.php由主应用程序识别:

use TestVendorTestPackageHttpControllersPlaygroundController;
use IlluminateSupportFacadesRoute;
Route::get('/playground', [PlaygroundController::class, 'index']);

并且是从我的ServiceProvider类加载的:

$this->loadViewsFrom(__DIR__.'/resources/views', 'playground');
loadRoutesFrom(__DIR__.'/routes.php');

我的名称空间通常也正确地写在我的包的composer.json中:

"autoload": {
"psr-4": {
"TestVendor\TestPackage\": "src/"
}
},

我的PlaygroundController位于src/Http/Controllers/PlaygroundController.php中:

namespace TestVendorTestPackageHttpControllers;
use IlluminateRoutingController;
class PlaygroundController extends Controller
{
public function index()
{
return view('playground::hello');
}
}

视图也在正确的包中。我正在使用https://github.com/Jeroen-G/laravel-packager把我的包裹搭上脚手架。进行了多个composer的自动加载和composer更新。

我的控制器在主应用程序中似乎没有被识别,我想我的名字间距在哪里不正确?

我已经看过了:

  • 目标类控制器不存在-Laravel 8解决方案不起作用
  • 目标类不存在。laravel 8中的问题解决方案不起作用

您已将控制器命名为:

namespace TestVendorTestPackageHttpControllers;

在上面的行中,尽管你说:

我的PlaygroundController位于src/Http/PlaygroundController.php中:

除非是打字错误,否则您需要在Http下面添加一个Controllers目录,并将您的PlaygroundController放入其中:

src/Http/Controllers/PlaygroundController.php

对于psr-4自动加载,文件夹结构和名称空间应该相互模仿。

相关内容

  • 没有找到相关文章

最新更新