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

7 浏览
0 Comments

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

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

我正在使用Laravel v8.42.1(PHP v7.4.3)和jetstream包。

我在为我的包创建控制器时遇到了困难,每当我尝试通过laraval应用程序的URL连接到我的URL时,都会出现以下错误(

目标类[TestVendor\TestPackage\Http\Controllers\PlaygroundController]不存在。

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

use TestVendor\TestPackage\Http\Controllers\PlaygroundController;
use Illuminate\Support\Facades\Route;
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/"

}

},

我在src/Http/Controllers/PlaygroundController.php中有我的PlaygroundController:

namespace TestVendor\TestPackage\Http\Controllers;
use Illuminate\Routing\Controller;
class PlaygroundController extends Controller
{
  public function index()
  {
    return view('playground::hello');
  }
}

视图也在正确的包中。

我正在使用https://github.com/Jeroen-G/laravel-packager来搭建我的包。

已进行了多次composer自动加载和composer更新。

似乎我的控制器在主应用程序中没有被识别,我认为我的命名空间有问题?

我已经查看了以下信息:

0
0 Comments

问题出现的原因是命名空间错误。解决方法是将PlaygroundController.php文件移动到src/Http/Controllers/目录下,并将命名空间修改为namespace TestVendor\TestPackage\Http\Controllers;。

0