Target Class Does Not Exist In Laravel 8

Websolutionstuff | Sep-23-2020 | Categories : Laravel

In this article, we will see target class does not exist in laravel 8 and how to fix target class not found in laravel 8. As you all know laravel 8 has already been released and you can see there are many changes and update in the laravel 8. Many laravel users are facing issues in their new laravel 8 version when they try to load their routes in web.php and they run into an Exception that says something like "Target class [postController] does not exist".

So, let's controller does not exist in laravel 8, laravel 8 target class does not exist and how to solve/fix target class does not exist in laravel 8.

 

target_class_not_found

 

Up to Laravel 7, the RouteServiceProvider.php file had the below code:

here, the namespace variable has stored 'App\Http\Controllers' and declared in middleware and prefix route as below.

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

protected function mapWebRoutes()
{
    Route::middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
}

protected function mapApiRoutes()
{
    Route::prefix('api')
        ->middleware('api')
        ->namespace($this->namespace)
        ->group(base_path('routes/api.php'));
}

 

 

But, In laravel 8 the $namespace variable was removed and the Route declaration changed as below:

 protected $namespace = null;

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

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

            Route::prefix('api')
                ->middleware('api')
                ->group(base_path('routes/api.php'));
        });
    }

 

So, Here are two different solutions for the target class does not exist.

1. Add namespace manually

In this process, you need to add value/path in the $namespace variable and you need to declare in route as well like below.

protected $namespace = 'App\Http\Controllers';
   
    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'));
        });
    }

Now, run again your app all codes are working fine without the "Target Class Does Not Exist" error.

 

 

2. Using Full Namespace in your Routes

 In this solution, you can use full namespace or change all your route declarations like the below code.

Route::resource('posts','App\Http\Controllers\PostController');

 


You might also like:

Recommended Post
Featured Post
Laravel 11 Reverb Real-Time Notifications
Laravel 11 Reverb Real-Time No...

Hello, laravel web developers! In this article, we'll see how to send real-time notifications in laravel 11 usi...

Read More

Sep-09-2024

Laravel 8 Toastr Notifications Example
Laravel 8 Toastr Notifications...

Today, I will show you Laravel 8 Toastr Notifications Example. There are many types of notifications availa...

Read More

Oct-19-2020

How To Block IP Address In Laravel 10
How To Block IP Address In Lar...

In this article, we will see how to block IP addresses in laravel 10. Here we will learn about how to restrict...

Read More

May-17-2023

Laravel 9 Insert Multiple Records In Database
Laravel 9 Insert Multiple Reco...

In this article, we will see laravel 9 insert multiple records in the database. Here, we will learn how to ins...

Read More

Dec-16-2022