这是我的控制器:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class RegisterController extends Controller
{
    public function register(Request $request)
    {
        dd('aa');
    }
}

如截图所示,类存在并且在正确的位置:

我的api.php路由:

Route::get('register', 'Api\RegisterController@register');

当我使用Postman命中我的寄存器路径时,它给了我以下错误:

目标类[Api\RegisterController]不存在。

我该怎么解决呢?


多亏了这些答案,我才得以修复它。我决定对这个路由使用完全限定类名,但是答案中描述了其他选项。

Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');

当前回答

确保在路由中使用了正确的文件名。

例如:

如果你的控制器文件名为User.php,请确保你引用的是User而不是UserController。

其他回答

确保在路由中使用了正确的文件名。

例如:

如果你的控制器文件名为User.php,请确保你引用的是User而不是UserController。

我犯了这个错误:

(阐明\合同\ \ BindingResolutionException容器 目标类[App\Http\Controllers\ControllerFileName]不存在。

解决方案:

检查一下你的类名。它应该与您的文件名完全相同。

是的,检查路由文件夹中的web.php是否使用了Controller类。

use App\Http\Controllers\<name of controlelr class>

在app/Providers文件夹中,文件RouteServiceProvider.php,将受保护的$namespace变量更改为

protected $namespace = 'App\\Http\\Controllers';

这将在保存时自动注释变量。

如果你正在使用Laravel 8,只需复制并粘贴我的代码:

use App\Http\Controllers\UserController;

Route::get('/user', [UserController::class, 'index']);