目标类 [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 不存在

Laravel api 头请求

如何使用 play framework 2.5 代理 HTTP 方法?

Laravel 无法保护 API 路由

Vue.js,如何通过 axios 在 api 链接中发送对象?

工厂方法