Laravel 8 - Route не может найти контроллеры: целевой класс [Auth \ LoginController] не существует

Сегодня я пошел попробовать Laravel 8, но, похоже, фасад Route больше не может находить контроллеры.

Маршрут /home дает мне эту ошибку:

Целевой класс [HomeController] не существует.

Я получаю аналогичную ошибку при запуске: php artisan route:list

Illuminate\Contracts\Container\BindingResolutionException

Target class [Auth\LoginController] does not exist.

at C:\...\vendor\laravel\framework\src\Illuminate\Container\Container.php:811
811 throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);

person PhillipMcCubbin    schedule 09.09.2020    source источник
comment
У меня была аналогичная проблема с установкой laravel 8 из dev-develop, но сегодня laravel объявила о выпуске версии 8. возможно, был отремонтирован. хотя еще не пробовал.   -  person Aslam    schedule 09.09.2020
comment
да. Это свежая установка версии 8, выпущенная сегодня.   -  person PhillipMcCubbin    schedule 09.09.2020


Ответы (3)


Благодаря lagbox я добавил namespace('App\Http\Controllers') к веб-маршруту в методе загрузки RouteServiceProvider:

public function boot()
{
    $this->configureRateLimiting();

    $this->routes(function () {
        Route::middleware('web')
            ->namespace('App\Http\Controllers')
            ->group(base_path('routes/web.php'));

Это помогло мне. Будем рады любым лучшим решениям.

person PhillipMcCubbin    schedule 09.09.2020
comment
Да, он работает нормально после добавления пространства имен. Это ошибка? $this->namespace возвращает null - person TrueCode; 13.11.2020

Если это свежая установка Laravel 8, в RouteServiceProvider нет имен, которые можно было бы применить к вашим маршрутам. Вы можете попробовать обернуть вызов Auth::routes() в группу маршрутов, которая объявляет пространство имен App\Http\Controllers, или сделать это другим способом. (при условии, что вы установили laravel/ui)

Route::namespace('App\Http\Controllers')->group(function () {
    Auth::routes();
});

Если вы хотите знать, как справиться с отсутствием пространства имен, определенного для ваших маршрутов:

https://stackoverflow.com/a/63808132/2109233

person lagbox    schedule 09.09.2020
comment
Спасибо, это сработало отлично. - person MT_Shikomba; 31.12.2020

Пользовательский интерфейс Laravel 8 и laravel больше не совместим,

Вместо этого используйте laravel / jetstream.

person Jasper Helmich    schedule 09.09.2020
comment
Можете ли вы рассказать, почему они больше не совместимы? - person lagbox; 09.09.2020
comment
См. Следующее: github.com/laravel/ - person Jasper Helmich; 09.09.2020
comment
это ничего не говорит о совместимости или несовместимости ... его можно установить в версии 8, файл composer.json поддерживает версию 8 библиотек ... так что насчет несовместимости? - person lagbox; 09.09.2020