[{"data":1,"prerenderedAt":95},["ShallowReactive",2],{"\u002Fposts\u002Fform-tambah-produk-create?{\"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},54,"Form Tambah Produk (Create)","form-tambah-produk-create","## 🎯 Tujuan\n\nMampu membuat **form tambah produk**, mengirim data dari form ke server, dan menyimpannya ke database menggunakan Laravel.\nMateri ini menjelaskan alur lengkap mulai dari routing → controller → form → penyimpanan data → redirect.\n\n---\n\n## 🧩 Materi & Langkah Praktik\n\n### 1. Tambahkan Route untuk Create dan Store\n\nUntuk membuat form dan menyimpan data, kita membutuhkan **dua route**:\n\n* Route GET → menampilkan halaman form (`create`)\n* Route POST → menerima data dari form (`store`)\n\nEdit file:\n\n```\nroutes\u002Fweb.php\n```\n\nTambahkan:\n\n```php\nuse App\\Http\\Controllers\\ProductController;\n\nRoute::get('\u002Fproducts', [ProductController::class, 'index'])->name('products.index');\nRoute::get('\u002Fproducts\u002Fcreate', [ProductController::class, 'create'])->name('products.create');\nRoute::post('\u002Fproducts', [ProductController::class, 'store'])->name('products.store');\n```\n\n### Penjelasan\n\n* `\u002Fproducts\u002Fcreate` → halaman form\n* `\u002Fproducts` (POST) → proses insert data ke database\n* `name('products.create')` → memberi nama route agar mudah dipanggil dalam Blade (contoh: `route('products.create')`)\n\n---\n\n### 2. Tambahkan Method `create` dan `store` di ProductController\n\nBuka file:\n\n```\napp\u002FHttp\u002FControllers\u002FProductController.php\n```\n\nTambahkan method berikut:\n\n```php\n\u003C?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Models\\Product;\nuse Illuminate\\Http\\Request; \u002F\u002F Jangan lupa ini\n\nclass ProductController extends Controller\n{\n    public function create()\n    {\n        return view('products.create');\n    }\n\n    public function store(Request $request)\n    {\n        Product::create([\n            'name' => $request->name,\n            'price' => $request->price,\n            'description' => $request->description,\n            'stock' => $request->stock,\n        ]);\n\n        return redirect()->route('products.index')->with('success', 'Produk berhasil ditambahkan!');\n    }\n}\n```\n\n### Penjelasan\n\n#### `create()`\n\n* Hanya menampilkan halaman form\n* Tidak mengambil data dari database\n* Mengarahkan ke file Blade `products\u002Fcreate.blade.php`\n\n#### `store(Request $request)`\n\n* Menerima data dari form HTML\n* `$request->name` mengambil input bernama `name`\n* `Product::create([...])` memasukkan data ke tabel `products`\n* Setelah berhasil, diarahkan kembali ke halaman list produk dengan pesan sukses\n\n**Pastikan model Product mengaktifkan `$fillable`**, misalnya:\n\n```php\nprotected $fillable = ['name', 'price', 'stock', 'description'];\n```\n\nAgar mass assignment bisa dilakukan.\n\n---\n\n### 3. Buat File View `create.blade.php`\n\nBuat file:\n\n```\nresources\u002Fviews\u002Fproducts\u002Fcreate.blade.php\n```\n\nIsi:\n\n```html\n@extends('layouts.main')\n\n@section('title', 'Tambah Produk')\n\n@section('content')\n\u003Cdiv class=\"d-flex justify-content-between align-items-center mb-3\">\n    \u003Ch2>Tambah Produk Baru\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.store') }}\" method=\"POST\" class=\"card p-4 shadow-sm\">\n    @csrf\n    \u003Cdiv class=\"mb-3\">\n        \u003Clabel>Nama Produk\u003C\u002Flabel>\n        \u003Cinput type=\"text\" name=\"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\" class=\"form-control\" required>\n    \u003C\u002Fdiv>\n\n    \u003Cdiv class=\"mb-3\">\n        \u003Clabel>Stok\u003C\u002Flabel>\n        \u003Cinput type=\"number\" name=\"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\">\u003C\u002Ftextarea>\n    \u003C\u002Fdiv>\n\n    \u003Cbutton type=\"submit\" class=\"btn btn-primary\">Simpan\u003C\u002Fbutton>\n\u003C\u002Fform>\n@endsection\n```\n\n### Penjelasan\n\n* `@csrf` → sangat penting untuk keamanan form, mencegah *CSRF attack*\n* `action=\"{{ route('products.store') }}\"` → data dikirim ke route POST\n* Semua input memiliki `name=\"\"` agar bisa diterima oleh controller\n\n---\n\n### 4. Tambahkan Tombol Tambah Produk di Halaman Index\n\nAgar pengguna bisa masuk ke halaman form, tambahkan tombol di bagian atas file:\n\n```\nresources\u002Fviews\u002Fproducts\u002Findex.blade.php\n```\n\nSeperti ini:\n\n```html\n\u003Ca href=\"{{ route('products.create') }}\" class=\"btn btn-primary btn-sm\">+ Tambah Produk\u003C\u002Fa>\n```\n\n---\n\n### 5. Coba Jalankan Aplikasinya\n\n1. Buka halaman:\nhttp:\u002F\u002F127.0.0.1:8000\u002Fproducts\n4. Klik tombol **+ Tambah Produk**\n![](https:\u002F\u002Fi.imgur.com\u002FmwxJJBP.png)\n5. Isi form\n6. Submit\n\nJika berhasil, data akan tersimpan dan tampil seperti ini:\n![YPn6aS.png](https:\u002F\u002Fs6.imgcdn.dev\u002FYPn6aS.png)\n\n\n---\n\n## 🗂️ Struktur Folder Penting\n\n```\nproject-laravel\u002F\n├── 📁 app\u002F\n│   └── 📁 Http\u002F\n│       └── 📁 Controllers\u002F\n│           └── ProductController.php\n├── 📁 resources\u002F\n│   └── 📁 views\u002F\n│       └── 📁 products\u002F\n│           ├── index.blade.php\n│           └── create.blade.php\n├── 📁 routes\u002F\n│   └── web.php\n```\n\n---","https:\u002F\u002Fcdn.rezweb.my.id\u002Fposts\u002FYJApyHJhETIQO0onCCg1VgcfFcsvZnXzF0hjjAiL.jpg",807,7,"2025-10-14T16:52:58+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,59,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":8,"slug":10,"title":9,"part_number":14},{"id":60,"slug":61,"title":62,"part_number":63},55,"edit-update-produk","Edit & Update Produk",8,{"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 membuat form tambah produk, mengirim data dari form ke server, dan menyimpannya ke database menggunakan Laravel. Materi ini menjelaskan alur len...",1788757408235]