🎯 Tujuan Pembelajaran
- Membuat fitur tambah dan tampil data kategori.
- Menggunakan form input dan validasi sederhana.
- Menampilkan data dari database ke tabel.
🧩 Materi Pokok
- Controller kategori.
- View form input dan tabel data.
- Validasi input menggunakan Request.
🧪 Langkah Praktik
1. Buat Controller
php artisan make:controller CategoryController
2. Tambahkan Route Manual
routes/web.php:
use App\Http\Controllers\CategoryController;
// Tampilkan semua kategori
Route::get('/categories', [CategoryController::class, 'index'])->name('categories.index');
// Simpan kategori baru
Route::post('/categories/store', [CategoryController::class, 'store'])->name('categories.store');
3. Implementasikan Method index dan store di Controller
app/Http/Controllers/CategoryController.php:
public function index()
{
$categories = Category::all();
return view('categories.index', compact('categories'));
}
public function store(Request $request)
{
$request->validate(['name' => 'required|unique:categories']);
Category::create($request->all());
return redirect()->back()->with('success', 'Kategori berhasil ditambahkan!');
}
4. Buat View dengan Bootstrap 5
File: resources/views/categories/index.blade.php
@extends('layouts.app')
@section('title', 'Kategori')
@section('content')
<div class="container">
<h3 class="mb-4">Daftar Kategori</h3>
@if(session('success'))
<div class="alert alert-success">{{ session('success') }}</div>
@endif
<form action="{{ route('categories.store') }}" method="POST" class="mb-4 row g-2">
@csrf
<div class="col-auto">
<input type="text" name="name" placeholder="Nama Kategori" required class="form-control" />
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Tambah</button>
</div>
</form>
<table class="table table-bordered table-striped">
<thead class="table-light">
<tr>
<th scope="col">No</th>
<th scope="col">Nama Kategori</th>
<th scope="col">Tanggal Dibuat</th>
</tr>
</thead>
<tbody>
@foreach($categories as $cat)
<tr>
<th scope="row">{{ $loop->iteration }}</th>
<td>{{ $cat->name }}</td>
<td>{{ $cat->created_at->format('d-m-Y H:i') }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endsection
📝 Latihan
- Tambahkan validasi pesan error menggunakan alert Bootstrap (
alert-danger). - Tambahkan kolom “Tanggal Dibuat” di tabel kategori (sudah contoh di atas).
💡 Catatan Tambahan
- Dengan route manual, kita lebih memahami cara kerja route dan controller Laravel.
- Validasi di controller memastikan data kategori tidak duplikat dan wajib diisi.
- Bootstrap 5 membuat form, tombol, dan tabel lebih rapi dan responsive.