Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #10: CRUD Laravel – Menginput Data Ke Database

 

 

Tutorial ini akan memandu Anda langkah demi langkah dalam membuat form dan menyimpan data yang diinput ke database menggunakan framework Laravel. Ini adalah bagian dari operasi Create dalam konsep CRUD (Create, Read, Update, Delete).


 

Langkah 1: Persiapan

 

Pastikan Anda sudah memiliki Model dan Controller yang akan digunakan. Pada tutorial ini, kita akan melanjutkan menggunakan Model Product dan Controller ProductController seperti yang sudah dibuat di tutorial sebelumnya.

Pastikan juga tabel products sudah ada di database Anda dan memiliki kolom seperti name dan description.

 

Langkah 2: Menambahkan Metode create dan store di Controller

 

Kita akan menambahkan dua metode baru di ProductController. Metode create akan bertugas menampilkan form, sedangkan metode store akan memproses data yang diinput dan menyimpannya ke database.

Buka file app/Http/Controllers/ProductController.php dan tambahkan atau lengkapi metode create dan store seperti di bawah ini:

PHP

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    // ... metode index() dari tutorial sebelumnya ...

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        return view('products.create');
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        // 1. Validasi input
        $validatedData = $request->validate([
            'name' => 'required|max:255',
            'description' => 'required',
        ]);

        // 2. Simpan data ke database
        $product = new Product;
        $product->name = $validatedData['name'];
        $product->description = $validatedData['description'];
        $product->save();

        // 3. Redirect kembali dengan pesan sukses
        return redirect()->route('products.index')->with('success', 'Produk berhasil ditambahkan!');
    }

    // ... metode resource lainnya ...
}

 

Penjelasan Kode

 

  • create(): Metode ini sangat sederhana, hanya mengembalikan view bernama products.create yang akan berisi form input.
  • store(Request $request):
    1. $request->validate(...): Laravel menyediakan validation yang kuat dan mudah digunakan. Di sini, kita memastikan name dan description tidak kosong (required) dan name tidak melebihi 255 karakter (max:255). Jika validasi gagal, Laravel akan secara otomatis mengembalikan pengguna ke halaman sebelumnya dengan pesan error.
    2. $product = new Product; ... $product->save();: Ini adalah cara Eloquent untuk membuat instance baru dari model dan menyimpan datanya ke tabel.
    3. redirect()->route('products.index'): Setelah berhasil menyimpan, kita mengarahkan pengguna kembali ke halaman daftar produk. ->with('success', ...) adalah cara untuk menambahkan pesan kilat (flash message) yang hanya akan tersedia untuk permintaan berikutnya.

 

Langkah 3: Membuat View untuk Form Input

 

Sekarang, buat file baru create.blade.php di dalam direktori resources/views/products/.

File ini akan berisi kode HTML untuk form input.

resources/views/products/create.blade.php:

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tambah Produk Baru</title>
</head>
<body>
    <h1>Tambah Produk Baru</h1>

    @if ($errors->any())
        <div>
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif

    <form action="{{ route('products.store') }}" method="POST">
        @csrf
        <div>
            <label for="name">Nama Produk:</label>
            <input type="text" id="name" name="name" value="{{ old('name') }}">
        </div>
        <br>
        <div>
            <label for="description">Deskripsi Produk:</label>
            <textarea id="description" name="description">{{ old('description') }}</textarea>
        </div>
        <br>
        <button type="submit">Simpan</button>
    </form>
</body>
</html>

 

Penjelasan Kode

 

  • @if ($errors->any()): Blok ini akan menampilkan pesan error dari validasi jika ada.
  • <form action="{{ route('products.store') }}" method="POST">: Ini adalah form HTML yang akan mengirimkan data. Atribut action menggunakan fungsi route() untuk menghasilkan URL yang benar ke metode store.
  • @csrf: Ini adalah direktif Blade yang sangat penting. Ini menghasilkan token CSRF (Cross-Site Request Forgery) tersembunyi untuk melindungi aplikasi Anda dari serangan. Laravel akan menolak permintaan POST tanpa token ini.
  • value="{{ old('name') }}": Fungsi old() adalah fitur Laravel yang secara otomatis akan mengisi kembali input form dengan nilai yang sebelumnya diinput jika terjadi kesalahan validasi. Ini sangat membantu pengalaman pengguna.

 

Langkah 4: Menambahkan Route

 

Terakhir, tambahkan route baru untuk menghubungkan URL dengan metode create dan store yang telah kita buat.

Buka file routes/web.php dan tambahkan route berikut. Jika Anda menggunakan --resource saat membuat controller, route ini sudah otomatis dibuat.

PHP

use App\Http\Controllers\ProductController;
use Illuminate\Support\Facades\Route;

// ... route lainnya ...

Route::get('/products/create', [ProductController::class, 'create'])->name('products.create');
Route::post('/products', [ProductController::class, 'store'])->name('products.store');

 

Mengakses Halaman

 

Sekarang, Anda dapat mengakses URL http://localhost:8000/products/create di browser. Anda akan melihat form input. Setelah mengisi form dan menekan tombol Simpan, data akan disimpan ke database, dan Anda akan dialihkan kembali ke halaman daftar produk dengan pesan sukses.

Selamat! Anda telah berhasil mengimplementasikan operasi Create dalam CRUD Laravel.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek