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

Posted

技术标签:

【中文标题】Laravel 包开发 - 目标类 [ControllerName] 不存在【英文标题】:Laravel package development - Target class [ControllerName] does not exist 【发布时间】:2021-08-12 07:07:07 【问题描述】:

我正在关注如何创建 laravel 包的教程。

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

我一直在为我的包创建控制器,尝试通过 laraval 应用程序 (

Target class [TestVendor\TestPackage\Http\Controllers\PlaygroundController] does not exist. 

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 来搭建我的包裹。 是否有多个作曲家自动加载和作曲家更新。

似乎我的控制器在主应用程序中无法识别,我认为我的名称间距不正确?

我已经看过了:

Target class controller does not exist - Laravel 8 解决方案无效 Target class does not exist. problem in laravel 8 解决方案无效

【问题讨论】:

【参考方案1】:

您已将控制器命名为:

namespace TestVendor\TestPackage\Http\Controllers;

在上面一行中,虽然你说:

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

除非是拼写错误,否则您需要在Http 下添加一个Controllers 目录并将您的PlaygroundController 放在那里:

src/Http/Controllers/PlaygroundController.php

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

【讨论】:

这确实是一个错字,如果这是解决方案,我会非常高兴。我将编辑正确的路径编辑:更正错误 命名空间确实有问题。我的控制器被命名为 TEstVendor,这就是它没有被拾取的原因。

以上是关于Laravel 包开发 - 目标类 [ControllerName] 不存在的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 开发者学习的 Go Web

Laravel 开发者学习的 Go Web

Laravel 5 从包服务提供者注册中间件

目标类 [UserController] 不存在 Laravel 8

Laravel SMS 短信发送包

Laravel 绑定解析异常。目标类不存在[重复]