Tutorial Lengkap CRUD Laravel 9 #3 Membuat Controller

Wildan Fuady
Wildan Fuady Seorang yang suka kopi beraroma manis, memikat dan membantunya lebih produktif. Laravel 22-10-20246 min read 125x dibaca 0 Comments
Tutorial Lengkap CRUD Laravel 9 #3 Membuat Controller

Tutorial Lengkap CRUD Laravel 9 Menggunakan Bootstrap 5 #3 Membuat Controller - Halo teman-teman, di tutorial kali ini kita akan belajar membuat controller di Laravel 9. Pada artikel sebelumnya kita sudah membahas tentang installasi dan membuat database. Sekarang kita akan lanjutkan pada pembahasan controller. Nah, daripada penasaran, yuk langsung kita mulai aja!

1. Cara Membuat Controller di Laravel 9

Laravel menyediakan cara yang mudah untuk membuat controller menggunakan Artisan, tool command line bawaan Laravel. Yuk, kita buat controller pertama kita!

a. Membuat Controller Sederhana

Untuk membuat controller sederhana, gunakan perintah:

php artisan make:controller NamaController

Contohnya, kalau kamu ingin membuat BlogController, ketik:

php artisan make:controller BlogController

Perintah ini akan membuat file bernama BlogController.php di dalam folder app/Http/Controllers.

b. Membuat Controller dengan Resource

Kalau kamu ingin membuat controller yang otomatis punya metode CRUD (Create, Read, Update, Delete), gunakan opsi --resource:

php artisan make:controller NamaController --resource

Contoh:

php artisan make:controller BlogController --resource

Perintah ini akan otomatis membuat beberapa method di dalam controller seperti index, create, store, show, edit, update, dan destroy. Ini sangat berguna kalau kamu ingin cepat membuat fungsi CRUD.

2. Memahami Method dalam Controller

Setelah controller berhasil dibuat, kamu bisa melihat file BlogController.php di dalam folder app/Http/Controllers. Kalau kamu membuat controller dengan --resource, maka di dalamnya sudah ada beberapa metode bawaan, yaitu:

  • index(): Untuk menampilkan daftar data.
  • create(): Untuk menampilkan form pembuatan data baru.
  • store(): Untuk menyimpan data baru ke database.
  • show(): Untuk menampilkan data berdasarkan ID tertentu.
  • edit(): Untuk menampilkan form edit data.
  • update(): Untuk memperbarui data yang ada.
  • destroy(): Untuk menghapus data dari database.

Kamu bisa menambahkan logika di dalam metode-metode tersebut sesuai kebutuhan aplikasi.

3. Menghubungkan Controller dengan Route

Setelah membuat controller, langkah berikutnya adalah menghubungkannya dengan route. File route untuk request berbasis web ada di routes/web.php.

a. Menambahkan Route Biasa

Contoh cara menghubungkan URL dengan controller:

use App\Http\Controllers\BlogController;

Route::get('/blog', [BlogController::class, 'index']);
Route::get('/blog/{id}', [BlogController::class, 'show']);

Kode di atas akan menghubungkan URL /blog ke method index di BlogController, dan URL /blog/{id} ke metode show.

b. Menambahkan Route Resource

Kalau kamu membuat controller dengan opsi --resource, kamu bisa menambahkan route resource seperti ini:

Route::resource('blog', BlogController::class);

Dengan cara ini, semua metode CRUD (Create, Read, Update, Delete) akan otomatis terhubung dengan URL yang sesuai.

4. Implementasi Controller

Silahkan buka file BlogController.php yang terdapat di direktori App\Http\Controllers\BlogController.php, kemudian isi dengan kode di bawah ini:


use Str;


public function index()
{
    $blog = \App\Models\Blog::get();

    return view('blog.index', compact('blog'));
}

public function create()
{
    $categories = \App\Models\Category::pluck('name', 'id');
    return view('blog.create', compact('categories'));
}

public function store(Request $request)
{
    $blog = new \App\Models\Blog;
    $blog->title = $request->title;
    $blog->slug = Str::slug($request->title);
    $blog->content = $request->content;
    $blog->status = $request->status;
    $blog->category_id = $request->category_id;
    $blog->save();

    return redirect()->route('blog.index')->with('success','Berhasil menyimpan data');
}

public function show($id)
{
    $blog = \App\Models\Blog::findorFail($id);
    return view('blog.show', compact('blog'));
}

public function edit($id)
{
    $blog = \App\Models\Blog::findorFail($id);

    $categories = \App\Models\Category::pluck('name', 'id');

    return view('blog.edit', compact('blog','categories'));
}

public function update(Request $request, $id)
{
    $blog = \App\Models\Blog::findorFail($id);
    $blog->title = $request->title;
    $blog->slug = Str::slug($request->title);
    $blog->content = $request->content;
    $blog->status = $request->status;
    $blog->category_id = $request->category_id;
    $blog->save();

    return redirect()->route('blog.index')->with('success','Berhasil update data');
}

public function destroy($id)
{
    $blog = \App\Models\Blog::findorFail($id);
    $blog->delete();

    return redirect()->route('blog.index')->with('success','Berhasil hapus data');
}

5. Tips Mengelola Controller dengan Baik

Supaya kode tetap rapi dan mudah dikelola, berikut beberapa tips saat membuat controller di Laravel:

  • Gunakan Konvensi Penamaan: Pastikan nama controller sesuai dengan fungsinya. Contohnya, UserController untuk mengelola data pengguna.
  • Pisahkan Logika yang Kompleks: Kalau logika dalam controller mulai kompleks, pertimbangkan untuk memindahkannya ke Service atau Helper.
  • Gunakan Resource Controller untuk CRUD: Menggunakan resource controller bisa menghemat waktu dan membuat kode lebih konsisten.

Kesimpulan

Membuat controller di Laravel 9 ternyata nggak ribet, kan? Dengan menggunakan Artisan CLI, kamu bisa membuat controller dengan cepat dan mudah. Controller sangat membantu dalam memisahkan logika aplikasi dari tampilan, membuat kode jadi lebih terstruktur dan gampang dikelola.

Nah, pada artikel selanjutnya akan membahas bagaimana menampilkan data, menambahkan halaman view pada halaman index, create dan edit data.

Yuk lanjut! 🚀

Mungkin kamu juga suka: