问题描述
今天我去兜风了Laravel 8,但看来Route Facade再也找不到控制器了。
路线/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.",$e);
解决方法
多亏了lagbox,我最终在RouteServiceProvider引导方法中向网络路由添加了namespace('App\Http\Controllers')
:
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::middleware('web')
->namespace('App\Http\Controllers')
->group(base_path('routes/web.php'));
那对我有用。任何更好的解决方案都将受到欢迎。
,如果这是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
,Laravel 8和laravel ui arent不再兼容,
改为使用laravel / jetstream。