Laravel 8 子文件夹内的控制器问题

Laravel 8 issue with controller inside subfolder

我有 laravel 8 个项目,但我遇到了子文件夹中控制器的问题。

我的 DashboardController 位于 /app/Http/Controllers/Dashboard。在我的 web.php 我有:

use App\Http\Controllers\Dashboard\DashboardController;
Route::get('dashboard', [DashboardController::class, 'dashboardView']);

DashboardController 具有此命名空间:

namespace App\Http\Controllers\Dashboard;

我试过取消注释 RouteServiceProvider.php 中的 $namespace 变量。我还添加了:

 ->namespace($this->namespace); 

在 boot() 方法中。但没有运气。我收到此错误:

Class 'App\Http\Controllers\Dashboard\Controller' not found"

当我在 laravel 控制器文件夹中有 DashboardController 时,一切正常。同样有趣的是 LoginController。它位于 Auth 子文件夹 (Controllers/Auth) 中,此控制器在子文件夹中工作。

我想将控制器移动到子文件夹中的原因是更好地组织文件。

这里有人能帮我解决这个问题吗?非常感谢您。

在您引用的 class 文件中 Controller;最有可能 extends Controller 在 class 定义中。在您声明的命名空间 App\Http\Controllers\Dashboard 中没有名为 Controller 的 class。您很可能会尝试引用 App\Http\Controllers\Controller,这意味着您将需要一个 use 声明或通过其 FQCN、完全限定的 Class 名称引用它。