🎯 Tujuan

Mampu menghapus data produk serta menambahkan validasi form sederhana pada fitur create dan update.


🧩 Materi & Langkah Praktik

1. Tambahkan Route Delete

Edit file routes/web.php:

use App\Http\Controllers\ProductController;

Route::delete('/products/{id}', [ProductController::class, 'destroy'])->name('products.destroy');

2. Tambahkan Method destroy di Controller

Edit file app/Http/Controllers/ProductController.php:

public function destroy($id)
{
    $product = Product::findOrFail($id);
    $product->delete();

    return redirect()->route('products.index')->with('success', 'Produk berhasil dihapus!');
}

3. Tambahkan Tombol Hapus di Tabel Produk

Edit file resources/views/products/index.blade.php, pada bagian kolom Aksi tambahkan tombol hapus:

<td>
    <a href="{{ route('products.edit', $product->id) }}" class="btn btn-warning btn-sm">Edit</a>

    <form action="{{ route('products.destroy', $product->id) }}" method="POST" class="d-inline">
        @csrf
        @method('DELETE')
        <button class="btn btn-danger btn-sm" onclick="return confirm('Yakin ingin hapus?')">Hapus</button>
    </form>
</td>

4. Tambahkan Validasi Form pada Method store dan update

Di ProductController.php, pada method store:

public function store(Request $request)
{
    $request->validate([
        'name' => 'required|min:3',
        'price' => 'required|numeric|min:1000',
        'stock' => 'required|integer|min:1',
    ]);

    Product::create($request->all());

    return redirect()->route('products.index')->with('success', 'Produk berhasil ditambahkan!');
}

Pada method update:

public function update(Request $request, $id)
{
    $request->validate([
        'name' => 'required|min:3',
        'price' => 'required|numeric|min:1000',
        'stock' => 'required|integer|min:1',
    ]);

    $product = Product::findOrFail($id);
    $product->update($request->all());

    return redirect()->route('products.index')->with('success', 'Produk berhasil diperbarui!');
}

5. Tampilkan Pesan Error di Form

Tambahkan kode ini di atas tag <form> di resources/views/products/create.blade.php dan resources/views/products/edit.blade.php:

@if ($errors->any())
<div class="alert alert-danger">
    <ul class="mb-0">
        @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
</div>
@endif

6. Jalankan Aplikasi

  • Buka halaman /products
  • Coba tambah produk baru (pastikan validasi berjalan) YPnYS2.png
  • Edit produk (validasi juga berlaku) YPnhmi.png
  • Hapus produk menggunakan tombol hapus YPnwcH.png

✅ Struktur Folder Penting

project-laravel/
├── app/
│   └── Http/
│       └── Controllers/
│           └── ProductController.php       <-- Controller untuk operasi CRUD produk
├── resources/
│   └── views/
│       └── products/
│           ├── index.blade.php             <-- Daftar produk + tombol edit & hapus
│           ├── create.blade.php            <-- Form tambah produk + validasi error
│           └── edit.blade.php              <-- Form edit produk + validasi error
├── routes/
│   └── web.php                            <-- Routing aplikasi (index, create, store, edit, update, delete)