Laravel 包开发 - 目标 class [ControllerName] 不存在
Laravel package development - Target class [ControllerName] does not exist
我正在学习如何创建 laravel 包的教程。
我正在使用 Laravel v8.42.1(PHP v7.4.3)和 jetstream 包。
我一直在为我的包创建一个控制器,当我尝试通过 laraval 应用程序连接到我的 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 加载 class:
$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 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 搭建我的包。
是否有多个作曲家自动加载和作曲家更新。
似乎我的控制器在主应用程序中无法识别,我觉得我的名字间距不正确?
我已经看过了:
解决方案无效
解决方案无效
您已将控制器命名为:
namespace TestVendor\TestPackage\Http\Controllers;
虽然你在上面的行中说:
And I have my PlaygroundController in src/Http/PlaygroundController.php:
除非是打字错误,否则您需要在 Http
下添加一个 Controllers
目录,并将您的 PlaygroundController
放在那里:
src/Http/Controllers/PlaygroundController.php
对于 psr-4
自动加载,您的文件夹结构和命名空间应该相互模仿。
我正在学习如何创建 laravel 包的教程。
我正在使用 Laravel v8.42.1(PHP v7.4.3)和 jetstream 包。
我一直在为我的包创建一个控制器,当我尝试通过 laraval 应用程序连接到我的 url 时,我总是遇到以下错误 ( TestVendor\TestPackage\src\routes.php被主应用程序识别: 并从我的 ServiceProvider 加载 class: 我的命名空间通常也正确地写在我的包的 composer.json 中: 我的 PlaygroundController 在 src/Http/Controllers/PlaygroundController.php: 视图也在正确的包中。
我正在使用 https://github.com/Jeroen-G/laravel-packager 搭建我的包。
是否有多个作曲家自动加载和作曲家更新。 似乎我的控制器在主应用程序中无法识别,我觉得我的名字间距不正确? 我已经看过了:Target class [TestVendor\TestPackage\Http\Controllers\PlaygroundController] does not exist.
use TestVendor\TestPackage\Http\Controllers\PlaygroundController;
use Illuminate\Support\Facades\Route;
Route::get('/playground', [PlaygroundController::class, 'index']);
$this->loadViewsFrom(__DIR__.'/resources/views', 'playground');
loadRoutesFrom(__DIR__.'/routes.php');
"autoload": {
"psr-4": {
"TestVendor\TestPackage\": "src/"
}
},
namespace TestVendor\TestPackage\Http\Controllers;
use Illuminate\Routing\Controller;
class PlaygroundController extends Controller
{
public function index()
{
return view('playground::hello');
}
}
您已将控制器命名为:
namespace TestVendor\TestPackage\Http\Controllers;
虽然你在上面的行中说:
And I have my PlaygroundController in src/Http/PlaygroundController.php:
除非是打字错误,否则您需要在 Http
下添加一个 Controllers
目录,并将您的 PlaygroundController
放在那里:
src/Http/Controllers/PlaygroundController.php
对于 psr-4
自动加载,您的文件夹结构和命名空间应该相互模仿。