Target class controller does not exist - Laravel 8

前端 未结 14 2145
你的背包
你的背包 2020-11-22 05:43

Here is my controller:



        
相关标签:
14条回答
  • 2020-11-22 05:57

    laravel 8 updated RouteServiceProvider and it affects route with string syntax, You can change it like above, but recommended way is using action syntax not using route with string syntax:

    Route::get('register', 'Api\RegisterController@register');
    

    Should be changed to:

    Route::get('register', [RegisterController::class, 'register']);
    
    0 讨论(0)
  • 2020-11-22 05:59

    If you would like to continue using the original auto-prefixed controller routing, you can simply set the value of the $namespace property within your RouteServiceProvider and update the route registrations within the boot method to use the $namespace property:

    class RouteServiceProvider extends ServiceProvider
    {
        /**
         * This namespace is 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)
                    ->group(base_path('routes/web.php'));
    
                Route::prefix('api')
                    ->middleware('api')
                    ->namespace($this->namespace)
                    ->group(base_path('routes/api.php'));
        });
    }
    
    0 讨论(0)
  • 2020-11-22 05:59

    For solution just uncomment line 29:

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

    in 'app\Providers\RouteServiceProvider.php' file.

    just uncomment line 29

    0 讨论(0)
  • 2020-11-22 05:59

    I had this error

    (Illuminate\Contracts\Container\BindingResolutionException Target class [App\Http\Controllers\ControllerFileName] does not exist.

    Solution: just check your class Name, it should be the exact same of your file name.

    0 讨论(0)
  • 2020-11-22 06:00

    Laravel 8 Update the way to write routes

    ref link https://laravel.com/docs/8.x/upgrade

    in laravel 8 you need to use like

    use App\Http\Controllers\SayhelloController;
    Route::get('/users/{name?}' , [SayhelloController::class,'index']);
    

    or

    Route::get('/users', 'App\Http\Controllers\UserController@index');
    

    If you want to use old way

    then in RouteServiceProvider.php

    add this line

     /**
         * This namespace is applied to your controller routes.
         *
         * In addition, it is set as the URL generator's root namespace.
         *
         * @var string
         */
        protected $namespace = 'App\Http\Controllers'; // need to add in Laravel 8
        
    
    public function boot()
    {
        $this->configureRateLimiting();
    
        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace) // need to add in Laravel 8
                ->group(base_path('routes/api.php'));
    
            Route::middleware('web')
                ->namespace($this->namespace) // need to add in Laravel 8
                ->group(base_path('routes/web.php'));
        });
    }
    

    Then you can use like

    Route::get('/users/{name?}' , [SayhelloController::class,'index']);
    

    or

    Route::get('/users', 'UserController@index');
    
    0 讨论(0)
  • 2020-11-22 06:05

    In Laravel 8 the way routes are specified has changed:

    Route::resource('homes', HomeController::class)->names('home.index');
    
    0 讨论(0)
提交回复
热议问题