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.
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.