Laravel 13 Pemula #7: Membuat Rumah untuk Kategori (Controller) – CategoryController

Tutorial Laravel 13 Pemula • Proyek Web Berita

#7: Membuat Rumah untuk Kategori (Controller) – CategoryController

Halo, Arsitek Kode! 

Di tutorial sebelumnya, kita belajar membuat rute (jalan tol) yang menghubungkan URL ke halaman. Tapi jika kita terus menulis semua logika di file routes/web.php, file itu akan menjadi sangat panjang dan berantakan. Bayangkan jika semua resep masakan ditulis di satu kertas – pasti repot, kan? Di Laravel, kita punya Controller sebagai "rumah" tempat kita menulis semua logika aplikasi. Controller akan mengatur alur data dari database ke tampilan, dan rute hanya bertugas memanggil controller.

🎯 Tujuan Kita:
  1. Memahami apa itu Controller dan fungsinya.
  2. Membuat CategoryController menggunakan perintah Artisan.
  3. Menambahkan method index() untuk menampilkan daftar kategori.
  4. Menghubungkan rute ke controller, bukan ke fungsi anonim.
  5. Menampilkan data kategori dari database ke view (menggunakan Model).

Apa Itu Controller?

Controller adalah kelas (seperti cetakan) yang berisi method-method (fungsi) untuk menangani permintaan. Misalnya:

  • index() → menampilkan daftar kategori.
  • create() → menampilkan form tambah kategori.
  • store() → menyimpan kategori baru ke database.
  • edit() → menampilkan form edit kategori.
  • update() → memperbarui kategori.
  • destroy() → menghapus kategori.

Dengan controller, kita bisa mengelompokkan semua logika yang berhubungan dengan "kategori" dalam satu tempat yang rapi. Di Laravel, controller disimpan di folder app/Http/Controllers.

Langkah 1: Membuat Controller dengan Artisan

✨ Perintah Ajaib: php artisan make:controller

Buka terminal Laragon, pastikan kamu berada di folder proyek situs-berita. Kemudian jalankan perintah:

php artisan make:controller CategoryController

Perintah ini akan membuat file baru di app/Http/Controllers/CategoryController.php. Buka file tersebut dengan editor. Isinya kira-kira seperti ini:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CategoryController extends Controller
{
    //
}

Kita akan mengisi bagian // dengan method-method yang dibutuhkan.

Langkah 2: Menambahkan Method Index

🔍 Method untuk Menampilkan Daftar Kategori

Ubah isi CategoryController.php menjadi seperti berikut:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CategoryController extends Controller
{
    public function index()
    {
        return "Ini adalah halaman daftar kategori (sementara)";
    }
}

Method index() ini nantinya akan mengembalikan tampilan daftar kategori. Untuk sekarang, kita kembalikan teks biasa dulu agar mudah diuji.

Langkah 3: Menghubungkan Rute ke Controller

Sekarang kita harus memberi tahu Laravel: ketika seseorang mengunjungi /kategori, panggil method index() di CategoryController.

🛣️ Ubah Rute di web.php

Buka file routes/web.php. Hapus atau komentar rute /kategori yang menggunakan fungsi anonim (yang kita buat sebelumnya). Ganti dengan yang baru:

use App\Http\Controllers\CategoryController;

Route::get('/kategori', [CategoryController::class, 'index']);

Penjelasan: [CategoryController::class, 'index'] artinya "panggil method index dari controller CategoryController".

💡 Catatan: Jangan lupa menambahkan use di bagian atas file agar Laravel tahu di mana controller itu berada.

Langkah 4: Uji Coba

Pastikan server Laravel berjalan (php artisan serve). Buka browser dan akses http://localhost:8000/kategori. Kamu akan melihat teks: "Ini adalah halaman daftar kategori (sementara)". Selamat! Sekarang rute sudah terhubung ke controller.

Langkah 5: Mengambil Data dari Database (Menggunakan Model)

Kita sudah punya tabel categories dengan data contoh (Teknologi, Olahraga). Sekarang kita ingin menampilkan data tersebut di halaman. Untuk itu, kita perlu Model. Model adalah jembatan antara database dan controller.

📦 Membuat Model Category

Jalankan perintah:

php artisan make:model Category

Ini akan membuat file app/Models/Category.php. Buka file tersebut, isinya sangat sederhana:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    use HasFactory;
}

Model ini akan secara otomatis terhubung ke tabel categories (aturan penamaan: nama model singular, tabel plural). Kita tidak perlu menulis apa pun lagi untuk saat ini.

🔍 Menggunakan Model di Controller

Kembali ke CategoryController. Ubah method index() menjadi:

use App\Models\Category; // tambahkan di atas

public function index()
{
    $categories = Category::all(); // ambil semua data dari tabel categories
    return view('kategori', compact('categories')); // kirim data ke view
}

Penjelasan: Category::all() mengambil semua baris dari tabel categories. Data tersebut disimpan dalam variabel $categories dan dikirim ke view kategori.blade.php menggunakan compact('categories').

Langkah 6: Menampilkan Data di View

Sekarang kita perlu mengubah file view resources/views/kategori.blade.php agar bisa menampilkan data kategori yang dikirim dari controller.

✏️ Edit File kategori.blade.php

Buka resources/views/kategori.blade.php dan ubah isinya menjadi:

<!DOCTYPE html>
<html>
<head>
    <title>Daftar Kategori</title>
    <style>
        body { font-family: Arial; margin: 20px; }
        table { border-collapse: collapse; width: 100%; }
        th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
        th { background-color: #f2f2f2; }
    </style>
</head>
<body>
    <h1>Daftar Kategori Berita</h1>
    <table>
        <thead>
            
                <th>ID</th>
                <th>Nama Kategori</th>
                <th>Slug</th>
            
        </thead>
        <tbody>
            @foreach ($categories as $category)
            
                {{ $category->id }}
                {{ $category->name }}
                {{ $category->slug }}
            
            @endforeach
        </tbody>
    </table>
</body>
</html>

Kode di atas menggunakan Blade (template engine Laravel). @foreach digunakan untuk mengulang setiap kategori yang ada di $categories. {{ ... }} digunakan untuk menampilkan nilai properti.

Langkah 7: Lihat Hasilnya!

Buka browser di http://localhost:8000/kategori. Sekarang kamu akan melihat daftar kategori yang ada di database (misalnya Teknologi, Olahraga) dalam bentuk tabel. Hebat! 🎉

💡 Jika belum ada data: Jika tabel kosong, tidak akan ada baris. Kamu bisa tambahkan data melalui HeidiSQL seperti di tutorial sebelumnya.

Ringkasan dan Konsep Penting

  • Controller adalah tempat kita menulis logika aplikasi. Dibuat dengan php artisan make:controller NamaController.
  • Model adalah jembatan ke tabel database. Dibuat dengan php artisan make:model NamaModel. Model Category akan otomatis terhubung ke tabel categories.
  • Rute di web.php menggunakan sintaks [NamaController::class, 'method'] untuk memanggil controller.
  • Data dikirim dari controller ke view menggunakan view('nama_view', compact('variabel')).
  • Di view (file Blade), kita bisa menampilkan data dengan {{ $variabel->properti }} dan melakukan perulangan dengan @foreach.

🚀 Apa Selanjutnya?

Kita sudah berhasil menampilkan daftar kategori. Langkah selanjutnya adalah menambahkan fitur tambah kategori (Create) melalui form. Kita akan membuat method create() untuk menampilkan form, dan store() untuk menyimpan ke database. Kita juga akan mulai menggunakan Layout Blade agar tampilan lebih rapi.

🌟 Semangat! Kamu sudah membuat controller pertama, model pertama, dan menampilkan data dari database ke halaman. Ini adalah pencapaian besar! Jangan lupa untuk istirahat dan tersenyum.

📝 Seri Tutorial Laravel 13 Pemula – Proyek Web Berita
✨ Selanjutnya: #8: Membuat Form Isi Data (Create & Store) – Memasukkan Nama Kategori

Lebih baru Lebih lama

نموذج الاتصال