Cara Mengatasi Error “Target class does not exist” di Laravel

Cara mengatasi error “Target class does not exist” di Laravel. Panduan memperbaiki namespace controller, route, dan autoload agar class dapat dikenali Laravel.

laravel target class does not exist laravel bindingresolutionexception laravel controller not found laravel route controller error

📂 Laravel | ✍ Kurnia Andi Nugroho | 🎯 Beginner ✅ Telah dilihat 6 kali

Cara Mengatasi Error “Target class does not exist” di Laravel

Problem

Saat menjalankan aplikasi Laravel, terkadang muncul error seperti berikut:

Target class [UserController] does not exist.

atau

Illuminate\Contracts\Container\BindingResolutionException
Target class does not exist.

Error ini terjadi ketika Laravel tidak dapat menemukan class yang dipanggil, biasanya controller, middleware, job, atau service.

Kasus ini sering muncul ketika:

  • Memanggil controller di route
  • Menggunakan dependency injection
  • Membuat service container binding
  • Menggunakan middleware atau job

Beberapa penyebab umum error ini antara lain:

  • Namespace controller tidak sesuai
  • Route tidak menggunakan format class
  • Nama file dan nama class berbeda
  • Controller berada di folder yang salah
  • Autoload composer belum diperbarui

Jika tidak diperbaiki, Laravel tidak akan bisa menjalankan route atau service yang memanggil class tersebut.

Solution

Berikut beberapa cara untuk mengatasi error “Target class does not exist” di Laravel.

1. Pastikan Namespace Controller Benar

Periksa namespace pada controller.

Contoh controller yang benar:

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    //
}

Jika namespace salah, Laravel tidak akan bisa menemukan class tersebut.


2. Pastikan Route Menggunakan Format Class

Pada Laravel 8 ke atas, penulisan route sebaiknya menggunakan class.

Contoh yang benar:

use App\Http\Controllers\UserController;

Route::get('/users', [UserController::class, 'index']);

Contoh yang salah:

Route::get('/users', 'UserController@index');

3. Pastikan Nama File Sama dengan Nama Class

Nama file harus sama dengan nama class.

Contoh:

File:

UserController.php

Isi class:

class UserController extends Controller

Jika nama file berbeda, Laravel tidak dapat melakukan autoload dengan benar.


4. Jalankan Composer Autoload

Jika baru membuat controller atau class baru, jalankan:

composer dump-autoload

Perintah ini akan memperbarui autoload class di Laravel.


5. Pastikan Controller Berada di Folder yang Benar

Struktur default Laravel:

app
 └── Http
     └── Controllers
         └── UserController.php

Jika controller berada di folder lain, namespace harus disesuaikan.


6. Bersihkan Cache Laravel

Kadang error terjadi karena cache.

Jalankan perintah berikut:

php artisan route:clear
php artisan config:clear
php artisan cache:clear