首页 > 解决方案 > 未找到 Laravel API 控制器 - “目标类 **** 不存在”

问题描述

我知道这在以后的版本中有点突破性的变化,我已经尝试了迄今为止通过stackoverflow和在线找到的所有方法来纠正并寻找拼写错误,但如果有人能提供帮助,我会有点卡在这里。

Laravel v8.6 - 全新安装

我的 api.php 和我尝试过的路线(显然不是同时)

 <?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use app\Http\Controllers\API\AssetTrackController;

//Route::get('/assettracking', [AssetTrackController::class, 'index']);
//Route::get('/assettracking', 'AssetTrackController@index');
//Route::resource('/assettracking', [AssetTrackController::class, 'index']);
Route::get('/assettracking', [AssetTrackController::class, 'index']);
Route::resource('/assettracking', AssetTrackController::class)->only([
    'index'
]);

我的控制器

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use app\Models\Assettrack;

class AssetTrackController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return DB::table('assettrack')->whereRaw('ID < 420000000')->get();
    }

我尝试添加到 RouteServiceProvider

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

/**
 * Define your route model bindings, pattern filters, etc.
 *
 * @return void
 */
public function boot()
{
    $this->configureRateLimiting();

    $this->routes(function () {
        Route::prefix('api')
            ->middleware('api')
            ->namespace($this->namespace)
            ->group(base_path('routes/api.php'));

        Route::middleware('web')
            ->namespace($this->namespace)
            ->group(base_path('routes/web.php'));
    });
}

控制器路径:HeatMAP/app/Http/Controllers/API/AssetTrackController.php api.php 路径:HeatMAP/routes/api.php

根据我已经找到的解决方案,我已经看过并且似乎无法解决这个问题。我觉得这个人正盯着我的脸。任何帮助表示赞赏。谢谢。

标签: phpmysqllaravelmodel-view-controllerlaravel-8

解决方案


您的控制器命名空间是错误的。

假设您的控制器按以下目录顺序排列:

app\Http\Controllers\Api\AssetTrackController.php

您应该将其修复为:

namespace App\Http\Controllers\Api;

推荐阅读