Study
Genie

Form Handling

Penjelasan

Data form yang dikirim lewat method POST bisa diakses dengan `params(:namafield)` atau lewat helper `postpayload()` dari `Genie.Requests`. Setelah data diterima, biasanya langsung dipetakan ke model SearchLight untuk divalidasi dan disimpan ke database. Genie tidak memaksa satu pola validasi tertentu, jadi validasi sederhana biasa ditulis manual dengan percabangan, sementara validasi lebih kompleks bisa memakai package tambahan atau fungsi custom yang mengecek tiap field sebelum data disimpan.

Contoh Konsep

using Genie.Router
using Genie.Requests
using SearchLight

route("/posts", method = POST) do
    judul = postpayload(:judul, "")
    isi = postpayload(:isi, "")

    if isempty(judul)
        return "Judul tidak boleh kosong"
    end

    p = Post(judul = judul, isi = isi)
    SearchLight.save!(p)
    redirect("/posts")
end

Praktikum

Buat handler POST "/produk" yang membaca field nama dan harga dari form, lalu menolak submit kalau harga kosong.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Berikan nilai default pada `postpayload(:field, default)` supaya field yang tidak dikirim tidak memicu error, cukup jadi string kosong.