📖
Materi ini butuh sekitar 4 menit untuk dibaca. Sediakan waktu dan kopi dulu! ☕

Selamat datang di bagian paling inti dari seri tutorial Belajar Laravel 10. Jika Anda sudah mengikuti materi sebelumnya tentang Routing, Blade, dan Eloquent, kini saatnya kita menyatukan semua potongan puzzle tersebut.

Pada artikel kelima ini, kita akan membangun fungsi CRUD (Create, Read, Update, Delete). CRUD adalah operasi dasar yang ada di hampir setiap aplikasi web di dunia, mulai dari sistem blog sederhana hingga platform e-commerce raksasa. Selain itu, kita akan mempelajari cara menjaga integritas data melalui Validasi.

Persiapan Controller dan Route

Untuk mengelola logika CRUD, cara terbaik adalah menggunakan Resource Controller. Laravel menyediakan perintah instan untuk membuat Controller yang sudah berisi fungsi-fungsi standar (index, create, store, edit, update, destroy).

Jalankan perintah ini di terminal: php artisan make:controller PostController --resource

Setelah itu, daftarkan rute tersebut di routes/web.php hanya dengan satu baris: Route::resource('posts', PostController::class);

Dengan satu baris Route::resource, Laravel secara otomatis menyediakan 7 jalur URL (rute) untuk menangani semua kebutuhan CRUD Anda.

Menampilkan dan Menambah Data

Menampilkan Data (Read)

Di dalam fungsi index() pada PostController, kita mengambil data dari database menggunakan Eloquent:

public function index() {
    $posts = Post::latest()->get();
    return view('posts.index', compact('posts'));
}

Form Tambah Data (Create)

Fungsi create() akan mengembalikan view berisi form, sedangkan fungsi store() akan bertugas menyimpan data yang dikirim dari form tersebut.

Validasi

Jangan pernah percaya pada input pengguna. Pengguna bisa saja mengosongkan kolom yang wajib diisi atau memasukkan karakter yang terlalu panjang. Di sinilah Validasi berperan.

Di Laravel 10, validasi sangat mudah diterapkan di dalam fungsi store():

public function store(Request $request) {
    $request->validate([
        'title'   => 'required|min:5',
        'content' => 'required',
    ]);

    Post::create([
        'title'   => $request->title,
        'content' => $request->content,
    ]);

    return redirect()->route('posts.index')->with('success', 'Data Berhasil Disimpan!');
}

Jika validasi gagal, Laravel akan secara otomatis mengembalikan pengguna ke halaman form dengan pesan kesalahan. Di file Blade, Anda bisa menampilkan pesan error tersebut dengan direktif @error:

<input type="text" name="title">
@error('title')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror

Mengubah dan Menghapus Data

Mengubah Data (Update)

Proses edit membutuhkan dua tahap: fungsi edit() untuk mencari data berdasarkan ID dan menampilkannya di form, serta fungsi update() untuk menyimpan perubahan tersebut.

Penting untuk diingat, karena form HTML tidak mendukung method PUT atau PATCH secara langsung, kita harus menggunakan method spoofing di dalam Blade:

<form action="/posts/{{ $post->id }}" method="POST">
    @csrf
    @method('PUT')
</form>

Menghapus Data (Delete)

Fungsi destroy() digunakan untuk menghapus baris data. Untuk alasan keamanan, proses hapus harus dilakukan melalui form dengan method DELETE agar tidak bisa dipicu hanya melalui link URL biasa.

public function destroy(Post $post) {
    $post->delete();
    return redirect()->route('posts.index')->with('success', 'Data Berhasil Dihapus!');
}

Menampilkan Pesan Flash (Feedback)

User pengalaman (User Experience) akan jauh lebih baik jika ada notifikasi setelah mereka melakukan aksi. Kita menggunakan Session Flash Message. Saat melakukan redirect, kita menyisipkan pesan sukses yang hanya akan muncul satu kali.

Di file Blade utama, Anda bisa mengeceknya seperti ini:

@if(session('success'))
    <div class="notify-success">
        {{ session('success') }}
    </div>
@endif

Kesimpulan

Menguasai CRUD dan Validasi adalah tonggak sejarah bagi setiap pengembang Laravel. Anda kini telah memahami cara mengalirkan data dari input pengguna, menyaringnya agar aman melalui validasi, menyimpannya ke database dengan Eloquent, dan menampilkannya kembali ke hadapan pengguna.

Dengan pola ini, Anda sudah bisa membangun aplikasi apa pun, mulai dari manajemen inventaris, sistem pendaftaran, hingga aplikasi catatan pribadi. Laravel 10 membuat proses yang kompleks ini menjadi sangat terstruktur dan menyenangkan.

Materi ini menutup seri dasar fungsionalitas aplikasi kita. Teruslah berlatih dengan menambahkan fitur-fitur baru seperti pencarian data (search) atau pembatasan halaman (pagination). Semangat!

A
admin leravio
Leravio Team

Member tim Leravio yang berpengalaman di bidang teknologi digital dan pengembangan produk untuk bisnis Indonesia.