Pengenalan
Tangani pengiriman formulir dan ambil data formulir.
Informasi lebih lanjut tentang formulir di panel admin OneEntry: https://doc.oneentry.cloud/docs/category/forms
🎯 Apa yang dilakukan modul ini?
Modul FormData memungkinkan Anda untuk mengirim formulir yang diisi pengguna (formulir kontak, survei, pendaftaran) ke OneEntry dan mengambil, memperbarui, atau menghapus data yang dikirim untuk analisis, pelaporan, dan manajemen.
Anggap saja ini sebagai manajer pengiriman formulir Anda - pengguna mengirim formulir, Anda menyimpannya di OneEntry, dan mengambilnya kapan pun Anda perlu melihat tanggapan, menghasilkan laporan, atau menganalisis data.
🚀 Memulai dengan Cepat
Inisialisasi modul dari defineOneEntry:
const { FormData } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Bangun tubuh dari konfigurasi formulir dan kirimkan:
// 1. Fetch the form to read its module config.
const form = await Forms.getFormByMarker("contact_form");
const formModuleConfigId = form.moduleFormConfigs[0].id;
const moduleEntityIdentifier = form.moduleFormConfigs[0].entityIdentifiers[0].id;
// 2. Submit the user's input.
const response = await FormData.postFormsData({
formIdentifier: "contact_form",
formModuleConfigId,
moduleEntityIdentifier,
replayTo: null,
status: "sent",
formData: [
{ marker: "name", type: "string", value: "Jack" },
],
});
console.log(response);
Untuk membaca pengiriman nanti, panggil getFormsDataByMarker(marker, formModuleConfigId, body?, isExtended?, langCode?, offset?, limit?).
✨ Konsep Kunci
Apa itu Data Formulir?
Data formulir adalah informasi yang dikirim pengguna melalui formulir. Setiap pengiriman dibangun dari array formData yang terdiri dari objek field (marker, type, value) ditambah pengenal konfigurasi formulir.
Struktur tubuh pengiriman
postFormsData menerima IBodyPostFormData:
const body = {
formIdentifier: 'contact_form', // Form marker
formModuleConfigId: 9, // Module config ID (from the form)
moduleEntityIdentifier: 'blog', // Module entity identifier (from the form)
replayTo: null, // Email address to reply to (optional)
status: 'sent', // Submission status (optional)
formData: [ // Form fields
{ marker: 'name', type: 'string', value: 'Test' },
],
};
📋 Apa yang Perlu Anda Ketahui
Pengiriman memerlukan konfigurasi formulir
Sebelum mengirim, Anda memerlukan tiga nilai, semua dibaca dari formulir itu sendiri:
- Marker formulir (
formIdentifier) — pengenal teks formulir formModuleConfigId— darimoduleFormConfigsformulirmoduleEntityIdentifier— darimoduleFormConfigsformulir
const form = await Forms.getFormByMarker('contact_form');
const formModuleConfigId = form.moduleFormConfigs[0].id;
const moduleEntityIdentifier = form.moduleFormConfigs[0].entityIdentifiers[0].id;
Cache nilai-nilai ini agar Anda tidak mengambil ulang formulir pada setiap pengiriman.
Field formData
Setiap entri dalam array formData menggambarkan satu field:
marker— harus cocok dengan marker field dari definisi formulirtype— tipe field (digunakan untuk validasi dan penanganan file)value— input pengguna
Field dengan tipe file / image / groupOfImages diunggah secara otomatis melalui modul FileUploading ketika Anda mengirimkan File/FileList/Blob sebagai value.
Status pengiriman
Gunakan field status untuk melacak status pengiriman. "sent" adalah nilai tipikal untuk pengiriman baru; Anda dapat memindahkan pengiriman ke status ditinjau/arsip dengan updateFormsDataStatusByid().
Memperbarui dan menghapus pengiriman
Pengiriman tidak bersifat tidak dapat diubah. Pengguna yang terautentikasi dapat mengubah atau menghapusnya:
updateFormsDataByid(id, body)— edit pengiriman yang disimpan berdasarkan id 🔐updateFormsDataStatusByid(id, body)— ubah hanya status pengiriman berdasarkan id 🔐deleteFormsDataByid(id)— hapus pengiriman berdasarkan id 🔐
Membaca pengiriman
getFormsDataByMarker mengembalikan pengiriman untuk sebuah formulir. Halaman melalui hasil dengan offset / limit, dan sempitkan dengan body permintaan (misalnya status, dateFrom, dateTo, userIdentifier).
📊 Tabel Referensi Cepat
| Metode | Deskripsi | Kasus Penggunaan |
|---|---|---|
| postFormsData() | Kirim data formulir baru | Pengguna mengirim formulir kontak |
| getFormsDataByMarker() | Dapatkan pengiriman untuk formulir tertentu | Lihat semua pengiriman formulir kontak |
| updateFormsDataByid() 🔐 | Perbarui pengiriman formulir berdasarkan id | Edit pengiriman yang disimpan |
| updateFormsDataStatusByid() 🔐 | Perbarui status pengiriman berdasarkan id | Tandai sebagai diproses/diarsipkan |
| deleteFormsDataByid() 🔐 | Hapus pengiriman formulir berdasarkan id | Hapus pengiriman |
🔐 metode memerlukan otorisasi pengguna — lihat AuthProvider. postFormsData() dan getFormsDataByMarker() bersifat publik.
❓ Pertanyaan yang Sering Diajukan (FAQ)
Bagaimana cara mengirim formulir?
Ambil formulir dengan Forms.getFormByMarker(), baca formModuleConfigId dan moduleEntityIdentifier dari moduleFormConfigs-nya, bangun tubuhnya, lalu panggil FormData.postFormsData(body). Lihat bagian Memulai dengan Cepat di atas.
Bisakah saya memperbarui atau menghapus data formulir yang dikirim?
Ya. Pengiriman dapat diubah atau dihapus melalui SDK (ini memerlukan otorisasi pengguna):
updateFormsDataByid()— edit pengiriman yang disimpan berdasarkan idupdateFormsDataStatusByid()— ubah hanya status pengiriman berdasarkan iddeleteFormsDataByid()— hapus pengiriman berdasarkan id
Bagaimana cara menangani unggahan file dalam formulir?
Kirimkan File / FileList / Blob sebagai value field dan postFormsData() akan mengunggahnya untuk Anda, atau unggah secara terpisah dengan modul FileUploading dan sertakan URL yang dikembalikan dalam formData.
Bagaimana cara memfilter pengiriman berdasarkan tanggal?
Kirimkan dateFrom dan dateTo dalam body permintaan dari getFormsDataByMarker().
Bagaimana cara melakukan paginasi melalui semua pengiriman?
Gunakan argumen offset dan limit dari getFormsDataByMarker().
🎓 Praktik Terbaik
- Cache konfigurasi formulir (
formModuleConfigId,moduleEntityIdentifier) untuk menghindari pengambilan ulang formulir pada setiap pengiriman. - Validasi field yang diperlukan di sisi klien sebelum mengirim; OneEntry juga memvalidasi di sisi server.
- Lakukan paginasi pembacaan dengan
offset/limitdaripada mengambil semuanya sekaligus. - Referensikan formulir berdasarkan marker, bukan berdasarkan ID numerik.
- Gunakan field
status(danupdateFormsDataStatusByid) untuk mengorganisir pengiriman. - Tangani kesalahan dengan try/catch dan periksa bentuk pengembalian
IError.
🔗 Dokumentasi Terkait
- Modul Formulir - Ambil struktur formulir untuk dikirim
- Modul FileUploading - Tangani unggahan file dalam formulir
- Modul Events - Siapkan notifikasi berbasis acara
- Modul Users - Kelola pengguna yang mengirim formulir