授权控制器不存在

AuthController doesnot exist

我正在 laravel 5.3.29 制作控制器时出现错误。

我到处搜索并且已经尝试过这个方法。

我的路线文件是。

我的 AuthController 文件。

如果有人知道我哪里做错了请告诉我谢谢。

Laravel.log:

[2017-01-15 07:30:32] local.ERROR: ReflectionException: Class App\Http\Controllers\Auth\AuthController 在 C:[=46= 中不存在] tainer.php:749 堆栈跟踪: #0 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php(749): 反射Class->__construct('App\Http\Contro...') #1 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php(644): Illuminate\Container\Container->build('App\Http\Contro...', 数组) #2 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(709): Illuminate\Container\Container->make('App\Http\Contro...', 数组) #3 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Route.php(203): Illuminate\Foundation\Application->make('App\Http\Contro...') #4 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Route.php(316): Illuminate\Routing\Route->getController() #5 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Route.php(278):Illuminate\Routing\Route->controllerMiddleware() #6 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Router.php(666):Illuminate\Routing\Route->gatherMiddleware() #7 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Router.php(646):Illuminate\Routing\Router->gatherRouteMiddleware(对象(Illuminate\Routing\Route)) #8 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Router.php(629): Illuminate\Routing\Router->runRouteWithinStack(对象(Illuminate\Routing\Route), 对象(Illuminate\Http\Request)) #9 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Router.php(607):Illuminate\Routing\Router->dispatchToRoute(对象(Illuminate\Http\Request)) #10 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(268):Illuminate\Routing\Router->dispatch(对象(Illuminate\Http\Request)) #11 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{闭包}(对象(Illuminate\Http\Request)) #12 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{闭包}(对象(Illuminate\Http\Request)) #13 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(对象(Illuminate\Http\Request), 对象(闭包)) #14 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{闭包}(对象(Illuminate\Http\Request)) #15 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{闭包}(对象(Illuminate\Http\Request)) #16 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(150): Illuminate\Pipeline\Pipeline->then(对象(闭包)) #17 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(117):Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(对象(Illuminate\Http\Request)) #18 C:\laragon\www\MainProject\public\index.php(53):Illuminate\Foundation\Http\Kernel->handle(对象(Illuminate\Http\Request)) #19 {主要}<br> [2017-01-15 07:30:32] local.ERROR: ReflectionException: Class App\Http\Controllers\Auth\AuthController 在 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php:749 中不存在 堆栈跟踪: #0 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php(749): 反射Class->__construct('App\Http\Contro...') #1 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php(644): Illuminate\Container\Container->build('App\Http\Contro...', 数组) #2 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(709): Illuminate\Container\Container->make('App\Http\Contro...', 数组) #3 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Route.php(203): Illuminate\Foundation\Application->make('App\Http\Contro...') #4 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Route.php(316): Illuminate\Routing\Route->getController() #5 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Route.php(278):Illuminate\Routing\Route->controllerMiddleware() #6 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Router.php(666):Illuminate\Routing\Route->gatherMiddleware() #7 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(193): Illuminate\Routing\Router->gatherRouteMiddleware(对象(Illuminate\Routing\Route)) #8 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(163): Illuminate\Foundation\Http\Kernel->gatherRouteMiddleware(对象(Illuminate\Http\Request)) #9 C:\laragon\www\MainProject\public\index.php(58): Illuminate\Foundation\Http\Kernel->终止(对象(Illuminate\Http\Request), 对象(Illuminate\Http\Response)) #10 {主要}

在 Laravel 4.2 中,我认为你不需要

namespace App\Http\Controllers\Auth
use App\Http\Controllers\Controller

删除即可,请注意你的控制器路径

确保您的 AuthController.php 位于 app/controllers

你确定你正在使用 Laravel 4.2 吗?为什么路线在 web.php 中?

据我所知,您正在使用 Laravel 5.3 如果您使用该结构,请再次确认您使用的是哪个 Laravel 版本

将路线更改为:

Route::get('/login', 'Auth\AuthController@getLogin');

还要确保 class 文件在此目录中:

app\Http\Controllers\Auth

将命名空间更改为 App\Http\Controllers 而不是 App\Http\Controllers\Auth

或者,在您的 routes.php 中说 Route::get('/login', 'Auth\AuthController@getLogin');

控制器中手动输入文件出现的问题

  • 我删除了我使用新文件选项创建的手动文件 崇高
  • 然后用 laragon 终端再次添加 php artisan make:controller
    授权控制器。
  • 然后复制粘贴之前的代码,现在可以正常工作了。

由于命名空间路径未识别。

Route::group([

'middleware' => 'api',
'namespace' => 'App\Http\Controllers',
'prefix' => 'auth'

], function ($router) {

Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('me', 'AuthController@me');

});

web.php 中缺少 Auth 文件夹名称 所以会是

Auth\AuthController@getLogin

我在 laravel 8 中使用上述语法时遇到问题,所以请使用 web.php 或 api.php -

中的内容

use App\Http\Controllers\Auth\AuthController

Route::post('login', [AuthController::class, 'getLogin']);

要解决 AuthController 在 Laravel 8 或更高版本中不存在的错误,只需转至

app-> Providers -> RouteServiceProvider.php and un-comment below line.

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

参考 https://www.youtube.com/watch?v=SYicSVNMeqc

路线::组([

'middleware' => 'api',
'namespace' => 'App\Http\Controllers',
'prefix' => 'auth'

], 函数 ($router) {

Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('profile', 'AuthController@profile');

});

我删除了这个 'namespace' => 'App\Http\Controllers' 到

路线::组([

'middleware' => 'api',
'prefix' => 'auth'

], 函数 ($router) {

Route::post('login', 'AuthController@login');
Route::post('logout', 'AuthController@logout');
Route::post('refresh', 'AuthController@refresh');
Route::post('profile', 'AuthController@profile');

});

并将此行添加到顶部

使用App\Http\Controllers\AuthController;