[{"data":1,"prerenderedAt":95},["ShallowReactive",2],{"\u002Fposts\u002Fedit-update-produk?{\"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},55,"Edit & Update Produk","edit-update-produk","### 🎯 Tujuan\n\nMampu menampilkan form edit data produk dan memperbarui data di database menggunakan Laravel secara benar.\n\n---\n\n### 🧩 Materi & Langkah Praktik\n\nPada bagian ini akan dijelaskan langkah lengkap untuk membuat fitur **Edit Produk**, mulai dari menambahkan route, membuat method `edit` & `update` pada controller, hingga membuat form edit.\n\n---\n\n#### 1. Tambahkan Route untuk Edit dan Update\n\nTambahkan 2 route baru di file `routes\u002Fweb.php`:\n\n```php\nuse App\\Http\\Controllers\\ProductController;\n\nRoute::get('\u002Fproducts\u002F{id}\u002Fedit', [ProductController::class, 'edit'])->name('products.edit');\nRoute::put('\u002Fproducts\u002F{id}', [ProductController::class, 'update'])->name('products.update');\n```\n\n**Penjelasan:**\n\n* `GET \u002Fproducts\u002F{id}\u002Fedit` → digunakan untuk menampilkan form edit berdasarkan ID produk.\n* `PUT \u002Fproducts\u002F{id}` → digunakan untuk mengirim dan menyimpan perubahan data ke database.\n* `name('products.edit')` dan `name('products.update')` memudahkan pemanggilan route menggunakan helper `route(...)`.\n\nDengan adanya 2 route ini, aplikasi sekarang memiliki jalur resmi untuk proses edit dan update data produk.\n\n---\n\n#### 2. Tambahkan Method `edit` dan `update` di `ProductController`\n\n> **Catatan:** Method `index`, `create`, dan `store` yang sudah ada sebelumnya **tidak boleh dihapus**.\n\nTambahkan method berikut ke dalam file `app\u002FHttp\u002FControllers\u002FProductController.php`:\n\n```php\n\u003C?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Models\\Product;\nuse Illuminate\\Http\\Request;\n\nclass ProductController extends Controller\n{\n    public function edit($id)\n    {\n        $product = Product::findOrFail($id);\n        return view('products.edit', compact('product'));\n    }\n\n    public function update(Request $request, $id)\n    {\n        $product = Product::findOrFail($id);\n\n        $product->update([\n            'name' => $request->name,\n            'price' => $request->price,\n            'stock' => $request->stock,\n            'description' => $request->description,\n        ]);\n\n        return redirect()->route('products.index')->with('success', 'Produk berhasil diperbarui!');\n    }\n}\n```\n\n**Penjelasan:**\n\n* `findOrFail($id)` akan mencari produk berdasarkan ID.\n  Jika ID tidak ditemukan, Laravel otomatis menampilkan halaman 404.\n* Method `edit()` berfungsi mengambil data lama → lalu mengirimkannya ke view.\n* Method `update()` menerima data dari form, kemudian melakukan update ke database menggunakan `$product->update()`.\n* Setelah update, pengguna diarahkan kembali ke `\u002Fproducts` dengan pesan sukses.\n\nDengan cara ini, alur edit produk menjadi jelas dan aman.\n\n---\n\n#### 3. Buat File View `resources\u002Fviews\u002Fproducts\u002Fedit.blade.php`\n\n```html\n@extends('layouts.main')\n\n@section('title', 'Edit Produk')\n\n@section('content')\n\u003Cdiv class=\"d-flex justify-content-between align-items-center mb-3\">\n    \u003Ch2>Edit Produk\u003C\u002Fh2>\n    \u003Ca href=\"{{ route('products.index') }}\" class=\"btn btn-secondary btn-sm\">← Kembali\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cform action=\"{{ route('products.update', $product->id) }}\" method=\"POST\" class=\"card p-4 shadow-sm\">\n    @csrf\n    @method('PUT')\n    \u003Cdiv class=\"mb-3\">\n        \u003Clabel>Nama Produk\u003C\u002Flabel>\n        \u003Cinput type=\"text\" name=\"name\" value=\"{{ $product->name }}\" class=\"form-control\" required>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"mb-3\">\n        \u003Clabel>Harga\u003C\u002Flabel>\n        \u003Cinput type=\"number\" name=\"price\" value=\"{{ $product->price }}\" class=\"form-control\" required>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"mb-3\">\n        \u003Clabel>Stok\u003C\u002Flabel>\n        \u003Cinput type=\"number\" name=\"stock\" value=\"{{ $product->stock }}\" class=\"form-control\" required>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"mb-3\">\n        \u003Clabel>Deskripsi\u003C\u002Flabel>\n        \u003Ctextarea name=\"description\" rows=\"3\" class=\"form-control\">{{ $product->description }}\u003C\u002Ftextarea>\n    \u003C\u002Fdiv>\n\n    \u003Cbutton type=\"submit\" class=\"btn btn-success\">Update\u003C\u002Fbutton>\n\u003C\u002Fform>\n@endsection\n```\n\n**Penjelasan:**\n\n* Form menggunakan metode `POST`, namun disertai `@method('PUT')` agar Laravel mengenalinya sebagai request `PUT`.\n* Field input otomatis terisi nilai lama (`value=\"{{ $product->name }}\"`) agar memudahkan proses pengeditan.\n* Menggunakan komponen Bootstrap supaya tampilan rapi dan mudah dipahami.\n\n---\n\n#### 4. Tambahkan Tombol Edit di Halaman Daftar Produk\n\nEdit file `resources\u002Fviews\u002Fproducts\u002Findex.blade.php`:\n\nTambahkan kolom **Aksi** di bagian `\u003Cthead>`:\n\n```html\n\u003Cth>Aksi\u003C\u002Fth>\n```\n\nTambahkan tombol edit di bagian `\u003Ctbody>`:\n\n```html\n\u003Ctd>\n    \u003Ca href=\"{{ route('products.edit', $product->id) }}\" class=\"btn btn-warning btn-sm\">Edit\u003C\u002Fa>\n\u003C\u002Ftd>\n```\n\n**Penjelasan:**\n\n* Tombol ini menjadi pintu masuk untuk mengedit produk.\n* Penggunaan `route('products.edit', $product->id)` memastikan URL selalu benar walaupun struktur routing berubah.\n* Class `btn-warning` memberi kesan \"aksi perubahan\" yang mudah dikenali pengguna.\n\n---\n\n#### 5. Jalankan Aplikasi\n\n1. Buka halaman daftar produk:\n   **[http:\u002F\u002F127.0.0.1:8000\u002Fproducts](http:\u002F\u002F127.0.0.1:8000\u002Fproducts)**\n2. Klik tombol **Edit** pada salah satu produk.\n![YPn4K0.png](https:\u002F\u002Fs6.imgcdn.dev\u002FYPn4K0.png)\n3. Ubah data sesuai kebutuhan.\n![YPnuYe.png](https:\u002F\u002Fs6.imgcdn.dev\u002FYPnuYe.png)\n4. Klik tombol **Update**.\n5. Anda akan diarahkan kembali dan melihat pesan **\"Produk berhasil diperbarui!\"**.\n![YPnMWC.png](https:\u002F\u002Fs6.imgcdn.dev\u002FYPnMWC.png)\n\n**Penjelasan:**\n\n* Semua perubahan disimpan ke database secara otomatis melalui method `update()`.\n* Pesan sukses akan muncul di halaman index jika template Anda sudah menampilkan session alert.\n\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 produk (edit & update)\n├── 📁 resources\u002F\n│   └── 📁 views\u002F\n│       └── 📁 products\u002F\n│           ├── index.blade.php               \u003C-- Tampilan daftar produk\n│           ├── create.blade.php              \u003C-- Form tambah produk\n│           └── edit.blade.php                \u003C-- Form edit produk\n├── 📁 routes\u002F\n│   └── web.php                              \u003C-- Definisi routing aplikasi\n```\n\n---","https:\u002F\u002Fcdn.rezweb.my.id\u002Fposts\u002FG0k0DeqgcDGPZ8LhBcqwyZ6SaD0dG9bn19eLJU8k.jpg",764,8,"2025-10-14T16:54:50+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,64,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":8,"slug":10,"title":9,"part_number":14},{"id":65,"slug":66,"title":67,"part_number":68},56,"hapus-produk-validasi-form","Hapus Produk & Validasi Form",9,{"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 menampilkan form edit data produk dan memperbarui data di database menggunakan Laravel secara benar. 🧩 Materi & Langkah Praktik Pada bagian ini...",1788757408252]