Laravel 8 中的错误:“目标类控制器不存在”
使用 Laravel 8 时,您可能会遇到错误,提示“目标类控制器不存在”尽管类位于正确的位置,但类 [ApiRegisterController] 不存在”。此错误源于 Laravel 8 中命名空间处理的更改。
以前,控制器会自动使用 RouteServiceProvider 中定义的命名空间作为前缀。然而,在 Laravel 8 中,默认情况下不再应用此前缀。因此,在路由中引用控制器时,您必须显式定义控制器的完全限定类名称。
解决方案 1:完全限定类名称
解决此问题问题,将路由中的控制器引用替换为完全限定的类名:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
解决方案2:命名空间前缀
或者,您可以通过修改 RouteServiceProvider 来重新启用命名空间前缀:
protected $namespace = 'App\Http\Controllers';
这将为路由中引用的所有控制器添加 AppHttpControllers 命名空间的前缀。
解决方案 3:使用命名空间组
在 api.php 路由文件中,您可以定义命名空间组以将命名空间应用于特定路由:
Route::group(['namespace' => 'Api'], function () { Route::get('register', 'RegisterController@register'); });
附加说明
以上是为什么 Laravel 8 会抛出'目标类控制器不存在”错误,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!