Halo teman-teman semuanya! Selamat datang kembali di seri tutorial "Tutorial Laravel 11 untuk Pemula". Di part keenam ini, kita akan belajar bagaimana cara menambahkan data ke dalam database menggunakan Laravel 11.
Jika sebelumnya di Part 5 kita sudah belajar cara menampilkan data dari database ke tampilan, maka kali ini kita akan melengkapi fungsionalitasnya dengan membuat fitur form tambah data agar kita bisa menambahkan produk baru ke dalam katalog.
Apa Itu Fitur Tambah Data?
Fitur tambah data memungkinkan pengguna untuk menginput informasi (seperti nama produk, deskripsi, harga, dan gambar) melalui form, lalu menyimpannya ke dalam database. Proses ini umumnya melibatkan:
Menyediakan form input di view.
Mengatur route dan controller untuk menangani permintaan.
Menyimpan data ke database menggunakan model.
Langkah-Langkah Membuat Fitur Tambah Data di Laravel 11
1. Menambahkan Route
Buka file routes/web.php
, lalu tambahkan dua route baru:
use App\Http\Controllers\ProductController; Route::get('/products/create', [ProductController::class, 'create'])->name('products.create'); Route::post('/products', [ProductController::class, 'store'])->name('products.store');
Penjelasan:
/products/create
: Menampilkan form tambah data./products
: Menangani request form dan menyimpan data ke database.
2. Menambahkan Method di Controller
Sekarang, buka kembali ProductController.php
dan tambahkan dua method baru:
public function create() { return view('products.create'); } public function store(Request $request) { // Validasi data input $validated = $request->validate([ 'name' => 'required|string|max:255', 'description' => 'required|string', 'price' => 'required|numeric', 'image' => 'required|url', ]); // Simpan ke database Product::create($validated); // Redirect ke halaman daftar produk return redirect()->route('products.index')->with('success', 'Produk berhasil ditambahkan!'); }
3. Membuat File View Form Tambah Produk
Sekarang buat file baru resources/views/products/create.blade.php
dan isi dengan kode berikut:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Tambah Produk</title> <!-- Bootstrap CDN --> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body style="background-color: #f3f4f6;"> <div class="container mt-5 p-4 bg-white rounded shadow"> <h1 class="mb-4 text-center">Tambah Produk Baru</h1> @if ($errors->any()) <div class="alert alert-danger"> <ul class="mb-0"> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <form action="{{ route('products.store') }}" method="POST"> @csrf <div class="mb-3"> <label for="name" class="form-label">Nama Produk</label> <input type="text" class="form-control" id="name" name="name" required value="{{ old('name') }}"> </div> <div class="mb-3"> <label for="description" class="form-label">Deskripsi</label> <textarea class="form-control" id="description" name="description" rows="3" required>{{ old('description') }}</textarea> </div> <div class="mb-3"> <label for="price" class="form-label">Harga (Rp)</label> <input type="number" class="form-control" id="price" name="price" required value="{{ old('price') }}"> </div> <div class="mb-3"> <label for="image" class="form-label">Gambar</label> <input type="url" class="form-control" id="image" name="image" required value="{{ old('image') }}"> </div> <button type="submit" class="btn btn-primary">Create</button> <a href="{{ route('products.index') }}" class="btn btn-secondary">Kembali</a> </form> </div> </body> </html>
Sekarang coba jalankan server laravel nya dengan cara php artisan serve
, lalu akses di browser 127.0.0.1:8000/products/create
.
Nanti akan muncul form input seperti di bawah ini:
Karena kita menggunakan upload file, jangan lupa untuk menjalankan perintah berikut agar folder storage
bisa diakses secara public:
php artisan storage:link
Setelah tombol create diklik, maka sekarang kita akan diarahkan ke list dari product yang sudah kita buat sebelumnya, dan harusnya data productnya sudah ada di table.
Kesimpulan
Pada part keenam ini, kita telah mempelajari bagaimana membuat fitur tambah data di Laravel 11. Mulai dari membuat route, method di controller, form input, hingga menyimpan data ke dalam database. Fitur ini sangat penting karena hampir semua aplikasi membutuhkan input dari pengguna. Di part selanjutnya, kita akan mempelajari bagaimana melihat detail data by id.