当前位置: 首页 > 知识库问答 >
问题:

Laravel 6.0 php artisan路由:列表返回“目标类[App\Http\Controllers\SessionController]不存在。”

沈弘文
2023-03-14

我正在使用Laravel 6.0,我尝试使用artisan route:list列出我的所有路线,但失败并返回:

照明\合同\容器\BindingResolutionExc0019:目标类[App\Http\Controller\SessionsController]不存在。

at/home/vagrant/code/vendor/laravel/framework/src/illumb/Container/Container.php:806 802 | 803 | try{804 |$reflector=新的ReflectionClass($concrete);805 |}catch(ReflectionException$e){

异常跟踪:

1照明\基金会\控制台\RouteListCommand::照明\基金会\控制台{闭包}(对象(照明\路由\路由))[内部]: 0

2 ReflectionException::(“类App\Http\Controllers\sessioncontroller不存在”)/home/vagrant/code/vendor/laravel/framework/src/light/Container/Container.php:804

3 ReflectionClass::u构造(“App\Http\Controllers\sessioncontroller”)/home/vagrant/code/vendor/laravel/framework/src/illighte/Container/Container.php:804

到目前为止,我只有一个非常简单的web.php路由文件:

Route::get('/', function () {
    return view('index');
});


Route::prefix('app')->group(function () {
    // Registration routes
    Route::get('registration/create', 'RegistrationController@create')->name('app-registration-form');
});


// Templates
Route::get('templates/ubold/{any}', 'UboldController@index');

知道我如何调试这个问题吗?

共有3个答案

帅博简
2023-03-14

运行此命令

  php artisan config:cache 
谢善
2023-03-14

对于那些对illumb\Contracts\Container\BindingResolutionException:Target类有类似问题的人[

composer dump-autoload

贺皓
2023-03-14

我正在从Laravel 7升级到Laravel 8(Laravel 8仍在开发中几天),也有这个问题。

解决方案是在路由中使用控制器的类名表示:

所以在web.php而不是

Route::get('registration/create', 'RegistrationController@create')

现在是:

use App\Http\Controllers\RegistrationController;

Route::get('/', [RegistrationController::class, 'create']);

或作为字符串语法(完整命名空间控制器名称):

Route::get('/', 'App\Http\Controllers\RegistrationController@create');

由于只有通过创建全新的laravel项目升级应用程序时才会出现此问题,因此您也可以将默认名称空间添加到RouteServiceProvider:

app/Providers/RouteServiceProvider.php

class RouteServiceProvider extends ServiceProvider
{
    /* ... */
     
    /** ADD THIS PROPERTY
     * If specified, this namespace is automatically applied to your controller routes.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'App\Http\Controllers';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @return void
     */
    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::middleware('web')
                ->namespace($this->namespace) // <-- ADD THIS
                ->group(base_path('routes/web.php'));

            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace) // <-- ADD THIS
                ->group(base_path('routes/api.php'));
        });
    }

    /* ... /*
}

另请参阅https://laravel.com/docs/8.x/routing#basic-routing或https://laravel.com/docs/8.x/upgrade(搜索路由)。

 类似资料: