[{"data":1,"prerenderedAt":95},["ShallowReactive",2],{"\u002Fposts\u002Fhapus-produk-validasi-form?{\"username\":\"irezabdullah\"}":3},{"success":4,"message":5,"data":6},true,"Post retrieved successfully",{"post":7,"seriesInfo":25,"seriesItems":28,"seoDescription":94},{"id":8,"title":9,"slug":10,"body":11,"cover_image_path":12,"view_count":13,"part_number":14,"created_at":15,"updated_at":16,"category":17,"author":20},56,"Hapus Produk & Validasi Form","hapus-produk-validasi-form","### 🎯 Tujuan\n\nMampu menghapus data produk serta menambahkan validasi form sederhana pada fitur create dan update.\n\n---\n\n### 🧩 Materi & Langkah Praktik\n\n#### 1. Tambahkan Route Delete\n\nEdit file `routes\u002Fweb.php`:\n\n```php\nuse App\\Http\\Controllers\\ProductController;\n\nRoute::delete('\u002Fproducts\u002F{id}', [ProductController::class, 'destroy'])->name('products.destroy');\n```\n\n---\n\n#### 2. Tambahkan Method `destroy` di Controller\n\nEdit file `app\u002FHttp\u002FControllers\u002FProductController.php`:\n\n```php\npublic function destroy($id)\n{\n    $product = Product::findOrFail($id);\n    $product->delete();\n\n    return redirect()->route('products.index')->with('success', 'Produk berhasil dihapus!');\n}\n```\n\n---\n\n#### 3. Tambahkan Tombol Hapus di Tabel Produk\n\nEdit file `resources\u002Fviews\u002Fproducts\u002Findex.blade.php`, pada bagian kolom **Aksi** tambahkan tombol hapus:\n\n```html\n\u003Ctd>\n    \u003Ca href=\"{{ route('products.edit', $product->id) }}\" class=\"btn btn-warning btn-sm\">Edit\u003C\u002Fa>\n\n    \u003Cform action=\"{{ route('products.destroy', $product->id) }}\" method=\"POST\" class=\"d-inline\">\n        @csrf\n        @method('DELETE')\n        \u003Cbutton class=\"btn btn-danger btn-sm\" onclick=\"return confirm('Yakin ingin hapus?')\">Hapus\u003C\u002Fbutton>\n    \u003C\u002Fform>\n\u003C\u002Ftd>\n```\n\n---\n\n#### 4. Tambahkan Validasi Form pada Method `store` dan `update`\n\nDi `ProductController.php`, pada method `store`:\n\n```php\npublic function store(Request $request)\n{\n    $request->validate([\n        'name' => 'required|min:3',\n        'price' => 'required|numeric|min:1000',\n        'stock' => 'required|integer|min:1',\n    ]);\n\n    Product::create($request->all());\n\n    return redirect()->route('products.index')->with('success', 'Produk berhasil ditambahkan!');\n}\n```\n\nPada method `update`:\n\n```php\npublic function update(Request $request, $id)\n{\n    $request->validate([\n        'name' => 'required|min:3',\n        'price' => 'required|numeric|min:1000',\n        'stock' => 'required|integer|min:1',\n    ]);\n\n    $product = Product::findOrFail($id);\n    $product->update($request->all());\n\n    return redirect()->route('products.index')->with('success', 'Produk berhasil diperbarui!');\n}\n```\n\n---\n\n#### 5. Tampilkan Pesan Error di Form\n\nTambahkan kode ini di atas tag `\u003Cform>` di `resources\u002Fviews\u002Fproducts\u002Fcreate.blade.php` dan `resources\u002Fviews\u002Fproducts\u002Fedit.blade.php`:\n\n```html\n@if ($errors->any())\n\u003Cdiv class=\"alert alert-danger\">\n    \u003Cul class=\"mb-0\">\n        @foreach ($errors->all() as $error)\n            \u003Cli>{{ $error }}\u003C\u002Fli>\n        @endforeach\n    \u003C\u002Ful>\n\u003C\u002Fdiv>\n@endif\n```\n\n---\n\n#### 6. Jalankan Aplikasi\n\n* Buka halaman `\u002Fproducts`\n* Coba tambah produk baru (pastikan validasi berjalan)\n![YPnYS2.png](https:\u002F\u002Fs6.imgcdn.dev\u002FYPnYS2.png)\n* Edit produk (validasi juga berlaku)\n![YPnhmi.png](https:\u002F\u002Fs6.imgcdn.dev\u002FYPnhmi.png)\n* Hapus produk menggunakan tombol hapus\n![YPnwcH.png](https:\u002F\u002Fs6.imgcdn.dev\u002FYPnwcH.png)\n---\n\n### ✅ Struktur Folder Penting\n\n```\nproject-laravel\u002F\n├── app\u002F\n│   └── Http\u002F\n│       └── Controllers\u002F\n│           └── ProductController.php       \u003C-- Controller untuk operasi CRUD produk\n├── resources\u002F\n│   └── views\u002F\n│       └── products\u002F\n│           ├── index.blade.php             \u003C-- Daftar produk + tombol edit & hapus\n│           ├── create.blade.php            \u003C-- Form tambah produk + validasi error\n│           └── edit.blade.php              \u003C-- Form edit produk + validasi error\n├── routes\u002F\n│   └── web.php                            \u003C-- Routing aplikasi (index, create, store, edit, update, delete)\n```","https:\u002F\u002Fcdn.rezweb.my.id\u002Fposts\u002FxqnAWtXPHE2z3M78yEj7PYLEgETdHXW404RqOSQh.jpg",986,9,"2025-10-14T16:56:56+07:00","2026-09-07T11:59:39+07:00",{"name":18,"slug":19},"LARAVEL","laravel",{"id":21,"name":22,"username":23,"avatar":24},1,"Irez Abdullah","irezabdullah","https:\u002F\u002Fcdn.rezweb.my.id\u002Favatars\u002Fd139726e-348f-4dab-95c6-bb87e2ad125e.jpeg",{"name":26,"slug":27},"Belajar Laravel dari Nol (Praktikum Web Framework) – Ringkas & Praktis","belajar-laravel-dari-nol-praktikum-web-framework-ringkas-praktis",[29,33,38,43,48,53,58,63,68,69,74,79,84,89],{"id":30,"slug":31,"title":32,"part_number":21},48,"pengenalan-web-framework-instalasi-laravel","Pengenalan Web Framework & Instalasi Laravel",{"id":34,"slug":35,"title":36,"part_number":37},49,"struktur-folder-routing-dasar","Struktur Folder & Routing Dasar",2,{"id":39,"slug":40,"title":41,"part_number":42},50,"blade-template-layouting-dengan-bootstrap-5-dmwo","Blade Template & Layouting dengan Bootstrap 5",3,{"id":44,"slug":45,"title":46,"part_number":47},51,"database-migration-qbsa","Database & Migration",4,{"id":49,"slug":50,"title":51,"part_number":52},52,"model-seeder","Model & Seeder",5,{"id":54,"slug":55,"title":56,"part_number":57},53,"controller-read-data-menampilkan-produk","Controller & Read Data (Menampilkan Produk)",6,{"id":59,"slug":60,"title":61,"part_number":62},54,"form-tambah-produk-create","Form Tambah Produk (Create)",7,{"id":64,"slug":65,"title":66,"part_number":67},55,"edit-update-produk","Edit & Update Produk",8,{"id":8,"slug":10,"title":9,"part_number":14},{"id":70,"slug":71,"title":72,"part_number":73},63,"upload-file-gambar-dan-validasi-cpw3","Upload File (Gambar) dan Validasi",10,{"id":75,"slug":76,"title":77,"part_number":78},62,"menampilkan-grafik-stok-produk","Menampilkan Grafik Stok Produk",11,{"id":80,"slug":81,"title":82,"part_number":83},64,"login-dan-implementasi-middleware-at","Login Dan Implementasi Middleware",12,{"id":85,"slug":86,"title":87,"part_number":88},61,"membuat-dashboard-admin-dengan-statistik-dan-grafik","Membuat Dashboard Admin dengan Statistik dan Grafik",13,{"id":90,"slug":91,"title":92,"part_number":93},65,"teknik-debugging-di-laravel","Teknik Debugging di Laravel",15,"🎯 Tujuan Mampu menghapus data produk serta menambahkan validasi form sederhana pada fitur create dan update. 🧩 Materi & Langkah Praktik Tambahkan Route Delete...",1788757408333]