> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-4-controller/4.3-menghubungkan-route-ke-controller.md).

# 4.3 Menghubungkan Route ke Controller

## Menghubungkan route ke controller

Pada bab 4.1, Anda menghubungkan route ke controller secara manual.

Contohnya seperti ini:

```php
Route::get('/beranda', [UtamaController::class, 'bukaBeranda']);
```

Pola itu tetap benar.

Namun, untuk `BukuController` yang dibuat sebagai resource controller, Laravel menyediakan cara yang lebih singkat.

Anda tidak perlu menulis 7 route satu per satu.

Laravel bisa membuat semuanya lewat satu baris dengan `Route::resource()`.

### Fungsi `Route::resource()`

`Route::resource()` dipakai untuk mendaftarkan route CRUD secara otomatis.

Jika Anda menulis:

```php
Route::resource('buku', BukuController::class);
```

Laravel akan membuat route standar untuk:

* menampilkan daftar data
* menampilkan form tambah data
* menyimpan data baru
* menampilkan detail data
* menampilkan form edit
* memperbarui data
* menghapus data

Ini sangat cocok untuk fitur CRUD.

{% hint style="info" %}
Resource route bekerja paling baik saat nama method di controller mengikuti pola bawaan Laravel seperti `index`, `create`, `store`, `show`, `edit`, `update`, dan `destroy`.
{% endhint %}

### Mendaftarkan resource route

Sekarang hubungkan `BukuController` ke file route.

Gunakan urutan ini.

{% stepper %}
{% step %}

### Buka file `web.php`

Buka folder `routes`.

Lalu buka file `web.php`.
{% endstep %}

{% step %}

### Tambahkan import controller

Di bagian atas file, tambahkan:

```php
use App\Http\Controllers\BukuController;
```

Pastikan nama import sama persis dengan nama class controller.
{% endstep %}

{% step %}

### Tambahkan resource route

Di bagian bawah file `web.php`, tambahkan:

```php
Route::resource('buku', BukuController::class);
```

Simpan perubahan file.
{% endstep %}

{% step %}

### Periksa daftar route

Buka terminal proyek.

Lalu jalankan:

```bash
php artisan route:list --path=buku
```

Perintah ini menampilkan route yang berhubungan dengan `buku`.
{% endstep %}
{% endstepper %}

### Memahami hasil `route:list`

Setelah `Route::resource()` didaftarkan, Laravel akan membuat beberapa route otomatis.

Yang paling penting untuk dipahami adalah pemetaan dasarnya:

* `GET /buku` -> `index()`
* `GET /buku/create` -> `create()`
* `POST /buku` -> `store()`
* `GET /buku/{buku}` -> `show()`
* `GET /buku/{buku}/edit` -> `edit()`
* `PUT` atau `PATCH /buku/{buku}` -> `update()`
* `DELETE /buku/{buku}` -> `destroy()`

Artinya, satu baris resource route langsung menghubungkan URL, HTTP method, dan method controller yang sesuai.

### Arti parameter `{buku}`

Pada hasil `route:list`, Anda akan melihat bagian seperti `{buku}`.

Itu adalah route parameter.

Parameter ini dipakai untuk mewakili data tertentu.

Contohnya:

* `/buku/5` bisa berarti detail buku dengan ID `5`
* `/buku/5/edit` bisa berarti form edit untuk buku dengan ID `5`

Nama `{buku}` berasal dari nama resource yang Anda daftarkan, yaitu `buku`.

### Jalankan server saat menguji

Sebelum menguji route, pastikan server Laravel sedang berjalan.

Gunakan salah satu cara berikut:

* buka **Laragon** lalu klik **Start All**
* atau jalankan `php artisan serve` dari folder proyek

Jika server aktif, Anda bisa mulai memeriksa route dan menguji URL yang tersedia.

### Output yang harus terlihat

Setelah subbab ini selesai, hasil berikut seharusnya sudah terlihat:

* file `routes/web.php` mengimpor `BukuController`
* route `Route::resource('buku', BukuController::class);` aktif
* perintah `php artisan route:list --path=buku` menampilkan route CRUD buku
* Anda bisa melihat path seperti `/buku`, `/buku/create`, dan `/buku/{buku}/edit`

### Troubleshooting yang paling sering

Masalah yang paling sering muncul:

* **`Class "BukuController" not found`** — import controller belum ditulis atau salah
* **route tidak muncul di `route:list`** — file `web.php` belum disimpan
* **hasil `route:list` kosong saat memakai `--path=buku`** — resource route belum didaftarkan atau nama path berbeda
* **bingung melihat `{buku}`** — itu parameter route otomatis, bukan teks biasa

{% hint style="warning" %}
Jika Anda menulis `Route::resource('buku', BukuController::class);`, maka path yang dibuat Laravel akan memakai awalan `/buku`, bukan nama lain.
{% endhint %}

### Poin evaluasi bab 4.3

Pastikan Anda sudah memahami poin berikut:

* Saya paham `Route::resource()` dipakai untuk membuat route CRUD secara otomatis.
* Saya tahu `use App\Http\Controllers\BukuController;` harus ditulis di bagian atas `web.php`.
* Saya tahu cara memeriksa route dengan `php artisan route:list`.
* Saya paham fungsi `--path=buku` untuk menyaring hasil route.
* Saya paham hubungan antara URL seperti `/buku/create` dengan method `create()`.
* Saya paham arti parameter route seperti `{buku}`.

Jika semuanya sudah jelas, lanjut ke [4.4 Penjelasan Struktur Method](/laravel/bab-4-controller/4.4-penjelasan-struktur-method.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-4-controller/4.3-menghubungkan-route-ke-controller.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
