AuthController не существует

Я работаю на Laravel 5.3.29, делая контроллер, я получаю ошибку.

Ошибка при запуске проекта

я ищу везде и уже пробую эти методы.

  • обновление композитора
  • композитор дамп-автозагрузка

Мой маршрутный файл есть.

Мой файл AuthController.

Пожалуйста, если кто-нибудь знает, где я делаю неправильно, дайте мне знать, спасибо.

Laravel.log:

[2017-01-15 07:30:32] local.ERROR: ReflectionException: Class App\Http\Controllers\Auth\AuthController does not exist in C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Con tainer.php:749 Stack trace: #0 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php(749): ReflectionClass->__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...', Array) #2 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(709): Illuminate\Container\Container->make('App\\Http\\Contro...', Array) #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(Object(Illuminate\Routing\Route)) #8 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Router.php(629): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #9 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Router.php(607): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #10 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(268): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #11 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(53): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #12 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #13 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(137): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #14 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php(33): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #15 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php(104): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #16 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(150): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #17 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(117): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #18 C:\laragon\www\MainProject\public\index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #19 {main}
[2017-01-15 07:30:32] local.ERROR: ReflectionException: Class App\Http\Controllers\Auth\AuthController does not exist in C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php:749 Stack trace: #0 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Container\Container.php(749): ReflectionClass->__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...', Array) #2 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(709): Illuminate\Container\Container->make('App\\Http\\Contro...', Array) #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(Object(Illuminate\Routing\Route)) #8 C:\laragon\www\MainProject\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php(163): Illuminate\Foundation\Http\Kernel->gatherRouteMiddleware(Object(Illuminate\Http\Request)) #9 C:\laragon\www\MainProject\public\index.php(58): Illuminate\Foundation\Http\Kernel->terminate(Object(Illuminate\Http\Request), Object(Illuminate\Http\Response)) #10 {main}

8 ответов

Решение

Проблема, которая возникает из-за ручного ввода файла в контроллер.

  • я удаляю созданный вручную файл с новой опцией файла в возвышенном
  • И добавьте еще раз с помощью терминала laragon php artisan make: controller
    AuthController.
  • И копия вставила предыдущий код, теперь он работает гладко.

Из-за того, что путь к пространству имен не определен.

      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 -

используйте App \ Http \ Controllers\ Auth \AuthController

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

Измените маршрут на:

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

Также убедитесь, что файл класса находится в этом каталоге:

app\Http\Controllers\Auth

Чтобы устранить ошибку AuthController не существует в Laravel 8 или более поздней версии, просто перейдите к

app-> Providers -> RouteServiceProvider.php и раскомментируйте строку ниже.

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

Ссылка https://www.youtube.com/watch?v=SYicSVNMeqc

В 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 вы используете

Маршрут::группа([

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

], функция ($ маршрутизатор) {


});

Я удалил это «пространство имен» => «App\Http\Controllers» для

Маршрут::группа([

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

], функция ($ маршрутизатор) {

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

});

и добавьте эту строку вверху

используйте App\Http\Controllers\AuthController;

Изменить пространство имен на App\Http\Controllers вместо App\Http\Controllers\Auth

Или, в качестве альтернативы, в вашем Routs.php сказать Route::get('/login', 'Auth\AuthController@getLogin');

Другие вопросы по тегам