在使用Laravel 8时出现“目标类控制器不存在”错误。

327

这是我的控制器:

<?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中访问register路由时,出现了以下错误:

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

如何解决?


多亏了回答中的建议,我已经修复了它。我决定为此路由使用完全合格的类名,但还有其他选项,如答案中所述。

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

1
欢迎来到 SO..你的控制器是否在 Api 文件夹内? - Kamlesh Paul
4
您需要重新生成类,可以通过执行 composer dump-autoload 命令来实现,或者在您的 RegisterController 中添加缺失的命名空间。 - STA
2
然后尝试运行 composer dump-autoload - Kamlesh Paul
5
找到了解决这个问题的正确方法:https://www.scratchcode.io/laravel-8-target-class-controller-does-not-exist/。 - Mayank Dudakiya
1
如果你想在 Laravel 8 中使用资源路由,则使用以下代码: Route::resource('xyz', App\Http\Controllers\XyzController::class); - Muhammad Shahzad
显示剩余5条评论
32个回答

-1
在 Laravel 8 中,路由的指定方式已经发生了变化:
Route::resource('homes', HomeController::class)->names('home.index');

-1
app/Providers 文件夹 中的 RouteServiceProvider.php 文件中,将受保护的 $namespace 变量更改为:
protected $namespace = 'App\\Http\\Controllers';

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


“自动注释”是什么意思?会发生什么?你能详细说明一下吗? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接