【问题标题】:Target class does not exist in LaravelLaravel 中不存在目标类
【发布时间】:2021-11-23 15:01:49
【问题描述】:

这是来自 api.php 的路由:

 Route::apiResource('friend-request', FriendRequestController::class)->except('delete');

控制器已经存在,我正在使用发布请求在商店中调用它:

FriendRequestController.php

class FriendRequestController extends ApiController
{
    public function store(StoreFriendRequest $request, FriendRequestService $friendRequestService,UserService $userService)
    {
      //code
    }

调用此路由后出现此错误

消息:“目标类 [App\Http\Controllers\App\Http\Controllers\FriendRequestController] 不存在。”

我猜是因为表单请求你怎么看?

【问题讨论】:

  • 你的控制器的命名空间是什么?

标签: laravel


【解决方案1】:

这很可能是因为app/Providers/RouteServiceProvider.php 文件的$namespace 属性未注释。

这意味着你的路由文件中的每个控制器都会有默认的\App\Http\Controllers命名空间前缀。

所以\App\Http\Controllers\FriendRequestController 变成\App\Http\Controllers\App\Http\Controllers\FriendRequestController 等等......

由于您使用的是“新”路由声明符号(使用完全限定的命名空间),因此您不需要“默认”命名空间:

 Route::apiResource('friend-request', FriendRequestController::class)->except('delete');

// FriendRequestController::class === \App\Http\Controllers\FriendRequestController



// However in the old declaration:
 Route::apiResource('friend-request', 'FriendRequestController')->except('delete');

// You were only using the base class name, so the prefix was here to help Laravel find the "entry point" of your controllers
// which is \App\Http\Controllers\

迁移指南中详细介绍了所有这些:https://laravel.com/docs/8.x/upgrade#automatic-controller-namespace-prefixing

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 2021-04-09
    • 2021-01-18
    • 2021-04-27
    • 2021-01-26
    • 2021-08-30
    • 2021-01-01
    • 2021-02-26
    • 2021-07-01
    相关资源
    最近更新 更多