Laravel 8(版本 8.35.1):目标 class 不存在

Laravel 8 (version 8.35.1): Target class does not exist

我正在使用 laravel 8.35.1 版本。我有一个 api-资源控制器 "ProductController"。在我的路线文件 api.php。我这样定义路线:

api.php

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;


Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::apiResource('/products', 'App\Http\Controllers\ProductController');

Route::group(['prefix' => 'products'], function () {
    Route::apiResource('/{product}/review', 'App\Http\Controllers\ReviewController');
});

注意: 它工作正常但是,当我删除控制器的完整路径时,就像只写 Route::apiResource('/products', 'ProductController'); 它显示错误

Target class [ProductController] does not exist.

首先清除 缓存 之前。我想摆脱完整的路径。第二个想将控制器放在 Api 文件夹中,那么如何为它定义路线。 我也试过 ProductController::class 但效果不佳

已更新 当我根据 laravel 8 文档使用路线时。 https://laravel.com/docs/8.x/controllers#resource-controllers 一切正常。但是当将控制器文件移动到 Api 文件夹然后声明路由名称 space 如 use App\Http\Controllers\Api\ProductController; 再次显示错误

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ProductController;
use App\Http\Controllers\ReviewController;

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::apiResource('/products', ProductController::class);

Route::group(['prefix' => 'products'], function () {
    Route::apiResource('/{products}/reviews', ReviewController::class);
});

您不必在路由中声明控制器时使用 class。 您可以将 'ProductController' 改为 ProductController::class

当我尝试这个时,它对我来说很好用。

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ReviewController;

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::apiResource('/products', 'App\Http\Controllers\ProductController');

Route::group(['prefix' => 'products'], function () {
    Route::apiResource('/{product}/reviews', [ReviewController::class, 'ReviewController']);
});