Laravel 8 - 路由找不到控制器:目标类 [Auth\LoginController] 不存在

8

今天我试用了 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);

我曾经遇到过类似的问题,在安装dev-develop版本的Laravel 8时,但今天Laravel宣布正式发布了8.0版本,这个问题可能已经被修复了。虽然我还没有尝试过。 - Aslam H
是的。这是今天刚发布的8版本的全新安装。 - PhillipMcCubbin
2个回答

19

由于lagbox的帮助,我最终在RouteServiceProvider的boot方法中添加了namespace('App\Http\Controllers')到web路由中:

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

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

那对我起了作用。如果有更好的解决方案,欢迎提供。


是的,在添加命名空间后它可以正常工作。这是一个错误吗?$this->namespace返回null - Rakesh K

9
如果这是 Laravel 8 的全新安装,那么就没有命名空间被定义在 RouteServiceProvider 中以应用于你的路由。你可以尝试将 Auth::routes() 调用包装在一个路由组中,它声明了命名空间 App\Http\Controllers,或者采取其他方式解决这个问题。(假设你已经安装了 laravel/ui)
Route::namespace('App\Http\Controllers')->group(function () {
    Auth::routes();
});

如果你想知道如何处理路由中未定义命名空间的问题,请参考以下链接: https://dev59.com/aVIG5IYBdhLWcg3wlifO#63808132

谢谢,这个完美地运作了。 - MT_Shikomba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接