在 Laravel 8 中使用控制器时,您可能会遇到尽管控制器存在且已定位,但仍显示“错误“目标类控制器不存在””消息
在 Laravel 8 中,命名空间不再自动作为路由组的前缀。因此,在定义没有命名空间前缀的路由时,必须使用控制器的完全限定类名。
选项 1:完全限定类名
在路由中使用控制器的完全限定类名定义:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
选项 2:在路由组中定义命名空间
如果您更喜欢前面的方法,请在 AppProvidersRouteServiceProvider 中的相关路由组中显式定义命名空间:
Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php'));
选项 3:取消注释 RouteServiceProvider 中的命名空间(Laravel 8.0.2 及更高版本)
在自版本 8.0.2 以来的全新 Laravel 8 安装中,您可以取消注释 AppProvidersRouteServiceProvider 中受保护的 $namespace 变量:
// protected $namespace = 'App\Http\Controllers';
通过实现这些解决方案之一,您可以解决“目标类控制器不存在”错误,并在 Laravel 8 中成功使用您的控制器。
以上是Laravel 8'目标类控制器不存在”:如何修复路由中的命名空间问题?的详细内容。更多信息请关注PHP中文网其他相关文章!