> 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.2-membuat-controller-via-artisan.md).

# 4.2 Membuat Controller via Artisan

## Membuat controller via Artisan

Pada bab 4.1, Anda sudah membuat controller pertama.

Sekarang kita bahas kenapa controller sebaiknya dibuat lewat Artisan.

Artisan adalah command line tool bawaan Laravel.

Dengan Artisan, Laravel membuat struktur file controller secara otomatis.

Itu membuat proses kerja lebih cepat dan lebih aman.

### Kenapa memakai Artisan

Kalau Anda membuat controller manual, Anda harus menulis sendiri:

* pembuka PHP
* `namespace`
* nama class
* struktur method dasar

Risiko salah ketik jadi lebih besar jika semuanya ditulis dari nol.

Dengan Artisan, Laravel langsung menyiapkan file yang valid.

Keuntungannya:

* struktur controller langsung benar
* penamaan class lebih konsisten
* lebih cepat saat proyek mulai besar

{% hint style="info" %}
Artisan bukan sekadar alat bantu. Dalam proyek Laravel, Artisan adalah cara kerja standar untuk membuat banyak komponen seperti controller, model, migration, dan seeder.
{% endhint %}

### Mengenal resource controller

Untuk fitur CRUD, Laravel menyediakan resource controller.

Resource controller adalah controller yang sudah berisi method umum untuk mengelola data.

Contohnya untuk data buku.

Jika Anda menjalankan perintah berikut:

```bash
php artisan make:controller BukuController --resource
```

Laravel akan membuat `BukuController` beserta method standar CRUD.

Method yang otomatis dibuat adalah:

* `index()`
* `create()`
* `store()`
* `show()`
* `edit()`
* `update()`
* `destroy()`

Anda belum harus memakai semuanya sekarang.

Yang penting, Anda paham bahwa Laravel sudah menyiapkan wadahnya.

### Praktik membuat resource controller

Sekarang buat controller untuk data buku.

Ikuti urutan ini.

{% stepper %}
{% step %}

### Buka terminal proyek

Buka proyek `e-library` di VS Code.

Lalu buka terminal bawaan.
{% endstep %}

{% step %}

### Jalankan perintah pembuatan controller

Ketik perintah berikut:

```bash
php artisan make:controller BukuController --resource
```

Jika berhasil, Laravel membuat file baru bernama `BukuController.php`.
{% endstep %}

{% step %}

### Periksa file yang dihasilkan

Buka folder berikut:

```
app/Http/Controllers
```

Pastikan file `BukuController.php` sudah muncul.
{% endstep %}

{% step %}

### Amati method bawaan

Buka file `BukuController.php`.

Di dalamnya, Anda akan melihat beberapa method kosong yang sudah disiapkan Laravel.

Fokus dulu pada nama method-nya.

Anda akan mengisinya secara bertahap di bab-bab berikutnya.
{% endstep %}
{% endstepper %}

### Arti method bawaan resource controller

Berikut fungsi singkat tiap method:

* `index()` — menampilkan daftar data
* `create()` — menampilkan form tambah data
* `store()` — menyimpan data baru
* `show()` — menampilkan satu data
* `edit()` — menampilkan form edit
* `update()` — memperbarui data
* `destroy()` — menghapus data

Dalam konteks E-Library:

* `index()` bisa dipakai untuk daftar buku
* `create()` bisa dipakai untuk form tambah buku
* `store()` bisa dipakai untuk menyimpan buku baru

### Jalankan server saat menguji

Sebelum lanjut, pastikan server Laravel tetap berjalan.

Gunakan salah satu cara berikut:

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

Meskipun bab ini fokus pada pembuatan file, kebiasaan memastikan server aktif tetap penting saat proses belajar.

### Output yang harus terlihat

Setelah subbab ini selesai, hasil berikut seharusnya sudah terlihat:

* file `app/Http/Controllers/BukuController.php` berhasil dibuat
* class `BukuController` berisi method resource bawaan Laravel
* folder controller menampilkan file baru tanpa error penamaan
* Anda bisa menyebut fungsi dasar `index`, `create`, `store`, `edit`, `update`, dan `destroy`

### Troubleshooting yang paling sering

Masalah yang paling sering muncul:

* **nama controller salah ketik** — hapus file yang salah, lalu jalankan ulang perintah dengan nama yang benar
* **file tidak muncul di folder controller** — pastikan terminal berada di folder proyek Laravel yang benar
* **perintah Artisan gagal dijalankan** — cek apakah `php` sudah dikenali terminal dan dependensi proyek sudah lengkap

{% hint style="warning" %}
Gunakan penamaan class controller dengan format PascalCase, misalnya `BukuController`, bukan `bukuController` atau `buku_controller`.
{% endhint %}

### Poin evaluasi bab 4.2

Pastikan Anda sudah memahami poin berikut:

* Saya paham kenapa controller lebih aman dibuat lewat Artisan.
* Saya tahu perintah `php artisan make:controller NamaController`.
* Saya tahu fungsi tambahan `--resource`.
* Saya tahu file controller berada di `app/Http/Controllers`.
* Saya paham arti dasar method `index`, `create`, `store`, `show`, `edit`, `update`, dan `destroy`.
* Saya tahu cara memperbaiki salah ketik nama controller dengan menghapus file yang salah lalu membuatnya ulang.

Jika semuanya sudah jelas, lanjut ke [4.3 Menghubungkan Route ke Controller](/laravel/bab-4-controller/4.3-menghubungkan-route-ke-controller.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.2-membuat-controller-via-artisan.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.
