【问题标题】:Laravel API controller not found - "Target class **** does not exist"未找到 Laravel API 控制器 - “目标类 **** 不存在”
【发布时间】:2021-09-03 15:42:13
【问题描述】:

我知道这在以后的版本中是一个重大变化,我已经尝试了迄今为止通过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

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

【问题讨论】:

标签: php mysql laravel model-view-controller laravel-8


【解决方案1】:

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

假设你的控制器是这样的目录顺序:

app\Http\Controllers\Api\AssetTrackController.php

你应该修复它:

namespace App\Http\Controllers\Api;

【讨论】:

  • 谢谢。哪个命名空间?在 RouteServiceProvider 中?
  • 控制器 AssetTrackController 的命名空间,在第二张图片上。
  • 现在你已经改变了控制器命名空间,你需要在web.php中把它改成use App\Http\Controllers\Api\AssetTrackController;还要检查您在 RouteServiceProvider 中所做的更改是否不会影响应用程序的其余部分,通常它们不需要弄乱 RouteServiceProvider 中的路由,laravel 中的路由器会单独完成所有事情。
  • 仍然无法正常工作...我不明白为什么。有没有办法调试,也许能够提供更多信息?
猜你喜欢
  • 2020-12-27
  • 2021-06-16
  • 2020-12-27
  • 2019-07-12
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多