【问题标题】: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 的新手

【问题讨论】:

    标签: php 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

    【讨论】:

      猜你喜欢
      • 2021-01-06
      • 2022-06-23
      • 2021-04-09
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2021-07-13
      • 2016-09-16
      相关资源
      最近更新 更多