php - 在 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)
{
....
}
}
解决方案
你应该更新你的代码。
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']);
});
推荐阅读
- excel - UDF 从通用字符串中提取特定数据
- kubernetes - 如何使用映射到 Kubernetes 中服务的 api
- android - Android RecyclerView onBindViewHolder Called Twice(适配器创建时第一次)
- c# - Pagedlist 分页链接中的 Href 属性为空
- flask - Flask-Swagger-UI 无法识别 swagger.json 的路径
- laravel - 如何从 Vue 初始化 DataTable?
- angular - Angular 7 Routing 重新加载子二级路由
- java - 用特定的单词列表替换字符串
- python - Kivy 错误:无法获取文本提供程序,中止
- php - 如何解决动态 php 查询?