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']);
});
我正在使用 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']);
});