Penyelesaian CRUD: Update, Delete & Hasil Output
Modul 05
"Menyempurnakan Kontrol Data Anda"
Melanjutkan Modul 4, sekarang kita akan menuntaskan siklus CRUD dengan fitur Update (Mengubah data) dan Delete (Menghapus data). Di akhir modul ini, Anda akan melihat simulasi langsung bagaimana bentuk visual dari aplikasi yang sedang kita bangun!
LAB: Update & Delete Data
01 Mengatur Routing Update & Delete
Tambahkan rute berikut di file routes/web.php. Perhatikan bahwa Update menggunakan method PUT, dan Delete menggunakan method DELETE.
// Menampilkan form edit berdasarkan ID
Route::get('/posts/{id}/edit', [PostController::class, 'edit'])->name('posts.edit');
// Memproses update data (PUT)
Route::put('/posts/{id}', [PostController::class, 'update'])->name('posts.update');
// Memproses delete data (DELETE)
Route::delete('/posts/{id}', [PostController::class, 'destroy'])->name('posts.destroy');
02 Menyiapkan Controller Update & Delete
Buka PostController.php dan tambahkan fungsi `edit`, `update`, dan `destroy`:
// 1. Mengambil data yang mau diedit, lalu melemparnya ke View Form Edit
public function edit($id)
{
$post = Post::findOrFail($id);
return view('posts.edit', compact('post'));
}
// 2. Memproses perubahan data ke Database
public function update(Request $request, $id)
{
$post = Post::findOrFail($id);
$post->update([
'title' => $request->title,
'content' => $request->content
]);
return redirect()->route('posts.index')->with('success', 'Data berhasil diubah!');
}
// 3. Menghapus data dari Database
public function destroy($id)
{
$post = Post::findOrFail($id);
$post->delete();
return redirect()->route('posts.index')->with('success', 'Data berhasil dihapus!');
}
03 Form Edit Blade & Method Spoofing
Buat file edit.blade.php. HTML form standar hanya mendukung GET dan POST. Di Laravel, kita gunakan Method Spoofing yaitu @method('PUT') agar form dikenali sebagai method PUT.
<form action="{{ route('posts.update', $post->id) }}" method="POST">
@csrf
@method('PUT') <!-- Mengubah POST menjadi PUT -->
<input type="text" name="title" value="{{ $post->title }}">
<textarea name="content">{{ $post->content }}</textarea>
<button type="submit">Update Data</button>
</form>
Penampakan Hasil Akhir Aplikasi
Jika Anda telah mengikuti dari Modul 4 sampai Modul 5 dan memberikan sedikit sentuhan CSS, hasil halaman index.blade.php Anda (Tabel Data) akan terlihat kurang lebih seperti ini:
Daftar Artikel (Post)
+ Tambah Data| Judul | Aksi |
|---|---|
| Belajar MVC Laravel |
Edit
Hapus
|
| Tips Eloquent ORM |
Edit
Hapus
|
Untuk memicu method DELETE, Anda tidak bisa menggunakan tag link biasa (<a>). Anda harus membungkus tombol hapus di dalam tag <form> dengan @method('DELETE') demi keamanan dan mematuhi aturan REST API.