php - Laravel 包开发 - 目标类 [ControllerName] 不存在
问题描述
我正在关注如何创建 laravel 包的教程。
我正在使用 Laravel v8.42.1 (PHP v7.4.3) 和 jetstream 包。
我一直在为我的包创建一个控制器,尝试通过 laraval 应用程序(<base-url/playground)连接到我的 url 时总是出现以下错误:
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来搭建我的包。是否有多个作曲家自动加载和作曲家更新。
似乎我的控制器在主应用程序中无法识别,我认为我的名称间距不正确?
我已经看过了:
- 目标类控制器不存在 - Laravel 8 解决方案不起作用
- 目标类不存在。laravel 8中的问题 解决方案不起作用
解决方案
您已将控制器命名为:
namespace TestVendor\TestPackage\Http\Controllers;
尽管您在上面的行中说:
我在 src/Http/PlaygroundController.php 中有我的 PlaygroundController:
除非那是一个错字,否则您需要在Controllers
下面添加一个目录Http
并将您的目录放在PlaygroundController
那里:
src/Http/Controllers/PlaygroundController.php
对于psr-4
自动加载,您的文件夹结构和命名空间应该相互模仿。
推荐阅读
- vba - 如何使用 VBA 在我的 PowerPoint 演示文稿的所有幻灯片上粘贴水印?
- c# - 检查商店营业时间 - 比较字符串和整数时出错
- regex - Perl综合电话号码正则表达式
- html - 身体背景图像不透明度
- android - 使用 Android 架构组件将单向数据绑定转换为双向数据绑定
- angular - HttpErrorResponse {headers: HttpHeaders, status: 404, statusText: "OK", url: "http://localhost:8087/classes/1", ok: false,
- python - 使用 pip 安装软件包时,如果找不到文件 METADATA,如何解决“由于 EnvironmentError 无法安装软件包”错误?
- reactjs - React Native Update 选择器值,除了带有 ref 的组件
- android - Groupie Recycler查看添加到同一可扩展项目的所有项目
- sql - ORDER 不从 2 个选项中选择较小的数字