首页 > 解决方案 > 在 Laravel 中使用命名空间定义 API 路由时,目标类 [Controller] 不存在

问题描述

我正在使用 Laravel v8,我尝试为管理员身份验证创建一个 API 路由,如下所示:

路线/api.php

Route::prefix('/admin')->name('admin.')->namespace('Admin')->group(function(){
    Route::middleware('auth:admin-api')->group( function () {
        Route::resource('tasks', TaskController::class);
    });
    Route::namespace('Auth')->group(function(){
        //Login Routes
        Route::post('/login','LoginController@login'); 
        Route::post('/register','LoginController@register'); 
    });
});

当我尝试访问时,http://laravel.local/api/admin/login出现以下错误:

Illuminate\Contracts\Container\BindingResolutionException:目标类 [Admin\Auth\LoginController] 不存在。在第 875 行的文件 /Users/John/Sites/laravel/htdocs/vendor/laravel/framework/src/Illuminate/Container/Container.php

我已经在 app/Http/Controllers/API/Admin/Auth/LoginController.php中创建了控制器文件

namespace App\Http\Controllers\API\Admin\Auth;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\API\BaseController as BaseController;
use App\Models\Admin;
use Validator;

   
class LoginController extends BaseController
{

    public function login(Request $request)
    {
      ....
    }
}

标签: phplaravellaravel-8

解决方案


你应该更新你的代码。

use App\Http\Controllers\API\Admin\Auth\LoginController;

Route::prefix('/admin')->name('admin.')->group(function(){
    Route::middleware('auth:admin-api')->group( function () {
        Route::resource('tasks', TaskController::class);
    });
 
    Route::post('/login',  [LoginController::class, 'login']); 
    Route::post('/register',  [LoginController::class, 'register']); 
});

推荐阅读