首页 > 解决方案 > Laravel Dingo 类不存在

问题描述

我在使用Dingo函数的 api.php 上有代码,但我无法调用控制器,因为它总是声明找不到 Controller,即使在他们的文档中明确指定我必须将控制器的完整路径放入我做了什么。

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

// use Dingo\Api\Contract\Http\Request;
// use Dingo\Api\Facade\Route;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {

    // This Will Work
    // $api->get('hello', function() {
    //     return "hi";
    // });
    
    // Will not work
    $api->get('hello', 'App\\Api\Controllers\\TestController@index');
    $api->get('hi','App\\Http\\Controllers\\TestController@index');
});

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

文件位置: 野狗图片

错误信息:Error Message: message: "Target class [app\Http\Controllers\TestController] does not exist.", status_code: 500,

你认为我在这里缺少什么?

标签: laraveldingo-api

解决方案


引用文件时,大小写确实很重要。我最近才发现这个。

内部hello路线

namespace app\Api\Controllers;

use Dingo\Api\Http\Request;
use app\Http\Controllers\Controller;

class TestController extends Controller
{
    public function index(Request $request)
    {
        return "hi";
    }
}

必须更改app\Http\..App\Http\...
也在 Api.php Controllers Path 上做了同样的事情
只是提醒一下,所以当您尝试在 vscode 上使用“复制相对路径”时,请尽量注意命名约定。


推荐阅读