目标类 [Api\UserController] 不存在 [重复]
Posted
技术标签:
【中文标题】目标类 [Api\\UserController] 不存在 [重复]【英文标题】:Target class [Api\UserController] does not exist [duplicate]目标类 [Api\UserController] 不存在 [重复] 【发布时间】:2021-03-06 17:50:39 【问题描述】:我在使用 php artisan route:list: 后在 Laravel 8 中遇到此错误:
Illuminate\Contracts\Container\BindingResolutionException 目标类 [Api\UserController] 不存在。
我在 App\Http\Controllers\Api 中有一个控制器:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
public function index()
$users = User::all();
return responde()->json($users);
路由/api.php:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('users', 'Api\\UserController@index');
我是 Laravel 的新手
【问题讨论】:
【参考方案1】:由于您要导入 use App\Http\Controllers\Api\UserController
命名空间语句,因此您可以将 ::class
表示法用于控制器类。它还会带来额外的好处,因为 IDE 将能够导航到不同于字符串的路径
从 Laravel 8 开始,我猜默认命名空间不再定义为 RouteServiceProvider 中的App\Http\Controllers
,而是由开发人员通过将 $namespace 属性设置为所需的值来定义默认命名空间。
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('users', [UserController::class, 'index']);
【讨论】:
也许你需要从终端运行composer dump-autoload
来刷新自动装线器。【参考方案2】:
在 Larvel 8 上,你不能像以前那样写路由,下一个语法是这样的
控制器:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
user App\Models\User;
class UserController extends Controller
public function index()
$users = User::all();
return responde()->json($users);
api.php:
<?php
use Illuminate\Support\Facades\Route;
Route::get('users', '\App\Http\Controllers\Api\UserController@index');
或者
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('/Pages', [UserController::class, 'index']);
Docs for routing
【讨论】:
以上是关于目标类 [Api\UserController] 不存在 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
“方法 App\Http\Controllers\API\UserController::show 不存在
如何使用 play framework 2.5 代理 HTTP 方法?