Ana içeriğe geç

Giriş

Form gönderimlerini yönetin ve form verilerini alın.

🎯 Bu modül ne yapar?

FormData modülü, kullanıcı tarafından doldurulan formları (iletişim formları, anketler, kayıtlar) OneEntry'ye göndermenizi ve gönderilen verileri analiz, raporlama ve yönetim için almanızı sağlar.

Bunu form gönderim yöneticiniz olarak düşünün - kullanıcılar formları gönderir, siz bunları OneEntry'de saklarsınız ve yanıtları görüntülemek, raporlar oluşturmak veya verileri analiz etmek istediğinizde geri alırsınız.


📖 Basit Açıklama

Web sitenizde bir iletişim formunuz olduğunu hayal edin. Kullanıcılar bunu doldurduğunda:

  1. Gönder - Kullanıcı "Gönder" butonuna tıklar → Form verileri OneEntry'ye gider
  2. Sakla - OneEntry gönderimi kaydeder (isim, e-posta, mesaj)
  3. Al - Gönderimleri görüntülemek, dışa aktarmak veya analiz etmek için alırsınız
  4. Yönet - Form yanıtlarını filtreleyin, arayın ve organize edin

Gerçek dünya iş akışı:

Kullanıcı iletişim formunu doldurur → postFormsData() → OneEntry'de kaydedildi

Admin gönderimleri görüntüler ← getFormsData() ← OneEntry verileri döner

Yapabilecekleriniz:

  • 📤 Form gönderin - Kullanıcı tarafından doldurulan verileri OneEntry'ye gönderin
  • 📥 Gönderimleri görüntüleyin - Sayfalama ile tüm form yanıtlarını alın
  • 🔍 Gönderimleri arayın - Belirli gönderimleri işaretleyici veya filtre ile bulun
  • 📊 Verileri dışa aktarın - Raporlar ve analiz için gönderimleri alın
  • 📧 Yanıtları yönetin - Form gönderimlerini tek bir yerde takip edin

Örnek senaryolar:

SenaryoNe Olur
İletişim FormuKullanıcı gönderir → E-posta bildirimi alırsınız → Gösterge panelinde görüntüleyin
AnketYanıtları toplayın → CSV'ye dışa aktarın → Sonuçları analiz edin
KayıtKullanıcı kaydolur → Veri saklanır → Onay e-postası gönderin
Geri BildirimMüşteri geri bildirim bırakır → Ekip inceler → Müşteriye yanıt verin

✨ Temel Kavramlar

Form Verisi Nedir?

Form verisi, kullanıcıların formlar aracılığıyla gönderdiği bilgilerdir.

Form Gönderim Yapısı

OneEntry'deki her gönderim şunları içerir:

  const body: IBodyPostFormData = {
formIdentifier: 'contact_form', // Form işaretleyici
formModuleConfigId: 9, // Modül yapılandırma ID'si
moduleEntityIdentifier: 'blog', // Modül varlık işaretleyici
replayTo: null, // Yanıt verilecek e-posta adresi
status: 'sent', // Gönderim durumu
formData: [ // Form alanları
{
marker: 'string', // Alan işaretleyici
type: 'string', // Alan türü
value: 'Test', // Alan değeri
},
{
marker: 'number',
type: 'integer',
value: 1,
},
]
};

Form Verisi Yaşam Döngüsü

1. Kullanıcı tarayıcıda formu doldurur

2. Ön uç girişi doğrular

3. postFormsData() OneEntry'ye gönderir

4. OneEntry gönderimi doğrular ve saklar

5. Bildirimler gönderilir (e-posta, webhook)

6. Admin getFormsData() ile alır

7. İncele, dışa aktar veya yanıt ver

Yaygın Kullanım Senaryoları

Kullanım SenaryosuAçıklamaÖrnek
İletişim FormlarıMüşteriler sorularla ulaşırDestek ekibi inceler ve yanıt verir
Potansiyel MüşteriPotansiyel müşteri bilgilerini toplarSatış ekibi takip eder
AnketlerGeri bildirim ve görüş toplarPazarlama sonuçları analiz eder
KayıtlarEtkinlikler, bültenler için kaydolurKatılımcıları/aboneleri takip eder
İş BaşvurularıÖzgeçmiş ve ön yazıları toplarİK adayları inceler
Geri Bildirim FormlarıMüşteri memnuniyeti ve incelemeleriÜrün/hizmetleri iyileştirir

📋 Bilmeniz Gerekenler

Form Gönderimi Yapılandırma Gerektirir

Göndermeden önce şunlara ihtiyacınız var:

  1. Form işaretleyici - Benzersiz form tanımlayıcı
  2. Form modül yapılandırma ID'si - Form ayarlarından
  3. Modül varlık işaretleyici - Form yapılandırmasından

Bunları nasıl alırsınız:

// Formu al
const form = await Forms.getFormByMarker('contact_form');

// Gerekli ID'leri çıkar
const formModuleConfigId = form.moduleFormConfigs[0].id;
const moduleEntityIdentifier = form.moduleFormConfigs[0].entityIdentifiers[0].id;

// Artık gönderebilirsiniz

Neden gerekli? OneEntry'nin bilmesi gerekenler:

  • Hangi form şablonunun kullanılacağı
  • Verilerin nerede saklanacağı
  • Hangi doğrulama kurallarının uygulanacağı

Form Verisi Yapısı

formData dizisi alan nesnelerini içerir:

formData: [
{
marker: "field_name", // Alan tanımlayıcı
type: "text" // Alan türü
value: "user_input", // Kullanıcının girişi
}
]

Önemli:

  • marker, form tanımındaki alan işaretleyicileri ile eşleşmelidir
  • type, doğrulama için faydalıdır
  • value, kullanıcı girişini içerir

Gönderim Durumu

Gönderim durumunu takip etmek için status kullanın:

DurumAnlamıNe Zaman Kullanılır
"sent"Başarıyla gönderildiYeni gönderimler için varsayılan
"pending"İnceleme bekliyorModerasyon gerekli
"processed"Admin tarafından işlendiİncelendi olarak işaretlendi
"archived"Eski/kapatılmış gönderimKayıtlar için saklayın

Sayfalama

Gönderimleri gruplar halinde alın.

Form İşaretleyici

Gönderimleri tanımlamanın bir yolu:

TanımlayıcıNe OlduğuNe Zaman Kullanılır
Form İşaretleyiciForm şablonu tanımlayıcıBelirli bir form için tüm gönderimleri alın

📊 Hızlı Referans Tablosu

YöntemAçıklamaKullanım Durumu
postFormsData()Yeni form verisi gönderKullanıcı iletişim formunu gönderir
getFormsData()Tüm gönderimleri al (sayfalı)Admin panelinde tüm formları gösterir
getFormsDataByMarker()Belirli form için gönderimleri alTüm iletişim formu gönderimlerini görüntüle

❓ Sıkça Sorulan Sorular (SSS)

Bir formu nasıl gönderirim?

Üç şeye ihtiyacınız var:

  1. Forms.getFormByMarker()'dan form yapılandırması
  2. Kullanıcı girişi verileri
  3. FormData.postFormsData() çağrısı

Gönderilen form verilerini güncelleyebilir miyim?

Doğrudan hayır. Form gönderimleri genellikle veri bütünlüğünü korumak için değiştirilemez.

Alternatifler:

  • Güncellenmiş verilerle yeni bir versiyon gönderin
  • Eski gönderimleri geçersiz olarak işaretlemek için status alanını kullanın
  • Arka uçta özel güncelleme mantığı uygulayın

Formlarda dosya yüklemelerini nasıl yönetirim?

Dosyaları ayrı olarak FileUploading modülünü kullanarak yükleyin, ardından dosya URL'lerini form verilerine ekleyin:


Gönderimleri tarihe göre nasıl filtrelerim?

Tüm gönderimleri alın ve istemci tarafında filtreleyin


Gönderimleri alan değeri ile arayabilir miyim?

Evet, gönderimleri alın ve istemci tarafında arayın


Tüm gönderimlerde nasıl sayfalama yaparım?

Offset ve limit kullanın


getFormsData() ile getFormsDataByMarker() arasındaki fark nedir?

YöntemNe DöndürürNe Zaman Kullanılır
getFormsData()Tüm gönderimleri tüm formlardanAdmin panelinde her şeyi gösterir
getFormsDataByMarker()Bir belirli form için gönderimlerSadece iletişim formu gönderimlerini görüntüle

Doğrulama hatalarını nasıl yönetirim?

Try/catch kullanın ve hata mesajlarını kontrol edin


💡 Önemli Notlar

⚠️ Form Yapılandırması Gereklidir

Yapılandırma olmadan formları gönderemezsiniz:

  • formModuleConfigId ve moduleEntityIdentifier zorunludur
  • Göndermeden önce bunları Forms.getFormByMarker()'dan alın
  • Tekrar eden API çağrılarını önlemek için uygulamanızda saklayın

🔒 Güvenlik Hususları

Hassas verileri asla açığa çıkarmayın:

  • Parolaları düz metin olarak göndermeyin
  • Girişi hem istemci hem de sunucu tarafında doğrulayın
  • Kullanıcı girişini görüntülemeden önce temizleyin

📦 Büyük Veri Setleri

Sayfalama önemlidir:

  • Binlerce gönderimi bir anda almayın
  • Sayfalama için limit ve offset kullanın
  • Sık erişilen veriler için önbellekleme düşünün

🔄 Gönderimden Sonra Salt Okunur

Form verisi değiştirilemez:

  • SDK aracılığıyla gönderimleri güncelleyemezsiniz
  • Değişiklik gerekiyorsa yeni bir versiyon gönderin
  • Gönderim durumunu takip etmek için status alanını kullanın

🎓 En İyi Uygulamalar

  • Form yapılandırmasını önbelleğe alın - Her gönderimde almak için önlem alın
  • Göndermeden önce doğrulayın - Gerekli alanları istemci tarafında kontrol edin
  • Sayfalama kullanın - Gönderimleri gruplar halinde alın
  • Hataları nazikçe yönetin - Her zaman try/catch kullanın
  • İşaretleyicileri tutarlı kullanın - Formları işaretleyici ile referans alın, ID ile değil
  • Gönderim durumunu takip edin - Gönderimleri organize etmek için durum alanını kullanın
  • Verileri düzenli olarak dışa aktarın - Gönderimleri CSV/veritabanına yedekleyin
  • Yeni gönderimleri izleyin - Anket veya webhook uygulayın

FormData modülünün tanımı


const { FormData } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);

Form ayarları:

  1. Forms.getFormByMarker('your-form-marker') kullanarak formu işaretleyici ile alın.
  2. Form verilerini gönderirken kullanılan yapılandırma için alınan formdan moduleFormConfigs alanını kullanın.
  3. Gövdeyi moduleFormConfig kullanarak oluşturun ve form verilerini gönderin.

const formModuleConfigId = moduleFormConfigs[0].id;
const moduleEntityIdentifier = moduleFormConfigs[0].entityIdentifiers[0].id;

const body = {
"formIdentifier": "your-form-marker",
"formModuleConfigId": formModuleConfigId,
"moduleEntityIdentifier": moduleEntityIdentifier,
"replayTo": null,
"status": "sent",
"formData": [...]
};

const response = await FormData.postFormsData(body);


🔗 İlgili Belgeler