انتقل إلى المحتوى الرئيسي

postFormsData

إرسال بيانات النموذج إلى منصة OneEntry.

🎯 ماذا تفعل هذه الطريقة؟

تقوم هذه الطريقة بتقديم بيانات النموذج إلى منصة OneEntry. فكر في الأمر كما لو كنت تضغط على "إرسال" في نموذج الاتصال - حيث ترسل جميع مدخلات المستخدم (الاسم، البريد الإلكتروني، الرسالة، الملفات، إلخ) إلى الخادم.

حالات الاستخدام:

  • 📝 نماذج الاتصال
  • 📋 نماذج التسجيل
  • 💬 نماذج التعليقات
  • 📤 تحميل الملفات
  • 🎫 تذاكر الدعم

📖 شرح بسيط

عندما يقوم المستخدم بملء نموذج على موقعك، تحتاج إلى إرسال تلك البيانات إلى مكان ما. تقوم هذه الطريقة بذلك بالضبط - تأخذ جميع حقول النموذج (نصوص، أرقام، ملفات، إلخ) وترسلها إلى OneEntry.

فكر في الأمر كالتالي:

المستخدم يملأ النموذج → كودك يستدعي postFormsData() → البيانات محفوظة في OneEntry ✅

🚀 مثال بسيط جداً (ابدأ من هنا!)

السيناريو: لديك نموذج اتصال يحتوي فقط على حقل الاسم.

// الخطوة 1: المستخدم يملأ النموذج (على سبيل المثال، يدخل "جون دو")
// الخطوة 2: أرسله إلى OneEntry

const response = await FormData.postFormsData({
formIdentifier: "contact_us", // 👈 اسم النموذج الخاص بك
formModuleConfigId: 2, // 👈 معرف تكوين النموذج (من إدارة OneEntry)
moduleEntityIdentifier: "blog", // 👈 أين يتم حفظه (من OneEntry)
replayTo: null, // 👈 بريد الرد (اختياري)
status: "sent", // 👈 "مرسل" أو "مسودة"
formData: [ // 👈 بيانات النموذج الفعلية
{
marker: "name", // 👈 اسم الحقل
type: "string", // 👈 نوع الحقل
value: "جون دو" // 👈 مدخلات المستخدم
}
]
});

// ✅ تم! تم تقديم النموذج بنجاح
console.log("تم تقديم النموذج، المعرف:", response.formData.id);

هذا كل شيء! الآن دعنا نرى كيف نتعامل مع أنواع الحقول المختلفة...


📋 ما تحتاج إلى معرفته قبل الاستخدام

قبل استدعاء هذه الطريقة، تحتاج إلى هذه الأشياء الثلاثة من لوحة إدارة OneEntry:

  1. formIdentifier - الاسم الفريد لنموذجك (على سبيل المثال، "contact_us")
  2. formModuleConfigId - معرف تكوين النموذج (رقم، على سبيل المثال، 2)
  3. moduleEntityIdentifier - أين يتم تخزين البيانات (على سبيل المثال، "blog"، "contacts")

كيف تجد هذه؟

  • تسجيل الدخول إلى OneEntry Admin
  • انتقل إلى قسم النماذج
  • انسخ القيم من تكوين النموذج الخاص بك

🔧 توقيع الطريقة

FormData.postFormsData(

body*, body.formIdentifier*, body.formModuleConfigId*, body.moduleEntityIdentifier*, body.replayTo*, body.status*, body.formData*, body.fileQuery, langCode

);

مخطط المعلمات

المخطط (body)

body(required): IBodyPostFormData
جسم الطلب
مثال:

{
"formIdentifier": "test-form",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
]
}

body.formIdentifier(required): string
معرف نصي (علامة) للنموذج.
مثال: "form"

body.formModuleConfigId(required): number
المعرف الفريد لتكوين وحدة النموذج.
مثال: 2

body.moduleEntityIdentifier(required): string
معرف نصي (علامة) للكيان في الوحدة.
مثال: "blog"

body.replayTo(required): string | null
البريد الإلكتروني للرد عليه.
مثال: "some@email.com"

body.status(required): string
حالة النموذج.
مثال: "sent"

body.formData(required): FormDataType[]
مصفوفة من كائنات بيانات النموذج.
مثال:

[
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]

body.fileQuery: IUploadingQuery
استعلام ملف اختياري لتحميل الملفات.
مثال:

{
"type": "page",
"entity": "editor",
"id": 3787
}

langCode: string
رمز اللغة. الافتراضي: "en_US"
مثال: "en_US"

أمثلة

مثال بسيط


const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "last_name",
"type": "string",
"value": "أندري"
}
]
};

const response = await FormData.postFormsData(body);

مثال مع نوع بسيط من السمات "string"، "number"، "float"


const body = {
"formIdentifier": "test-form",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "string_marker",
"type": "string",
"value": "اسم المستخدم"
},
{
"marker": "number_marker",
"type": "number",
"value": 1
},
{
"marker": "float_marker",
"type": "float",
"value": 2.256
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع بسيط من السمات "date"، "dateTime"، "time"


const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "date_marker",
"type": "date",
"value": {
"fullDate": "2024-05-07T21:02:00.000Z",
"formattedValue": "08-05-2024 00:02",
"formatString": "DD-MM-YYYY HH:mm"
}
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع بسيط من السمات "text" (يمكن تقديم واحدة فقط من htmlValue أو plainValue أو mdValue)


const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "about_marker",
"type": "text",
"value": [
{
"htmlValue": "<p>مرحبا بالعالم</p>",
"params": {
"isImageCompressed": true,
"editorMode": "html"
}
}
]
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع بسيط من السمات "textWithHeader" (يمكن تقديم واحدة فقط من htmlValue أو plainValue أو mdValue)


const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
marker: "textwithheader_marker",
type: "textWithHeader",
value: [
{
"header": "عنوان",
"htmlValue": "<p>مرحبا بالعالم</p>",
"params": {
"isImageCompressed": true,
"editorMode": "html"
}
}
]
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع السمة "image"


const testImageUrl = 'https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/7e0a6a70-a23d-410f-8b6a-f8b4f7483244.png';
const filename = 'test-image.png';

/* في سيناريو العالم الحقيقي، يجب عليك استخدام واجهة برمجة التطبيقات لإنشاء ملف من عنوان URL، ولكن من أجل البساطة، سنستخدم عنوان URL للملف المحدد مسبقًا ونستخدم طريقة createFileFromUrl لهذا المثال */
const file = await FileUploading.createFileFromUrl(testImageUrl, filename);

const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
marker: "image_marker",
type: "image",
value: [
file
]
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع السمة "groupOfImages"


const testImageUrl = 'https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/7e0a6a70-a23d-410f-8b6a-f8b4f7483244.png';
const filename = 'test-image.png';

/* في سيناريو العالم الحقيقي، يجب عليك استخدام واجهة برمجة التطبيقات لإنشاء ملف من عنوان URL، ولكن من أجل البساطة، سنستخدم عنوان URL للملف المحدد مسبقًا ونستخدم طريقة createFileFromUrl لهذا المثال */
const file = await FileUploading.createFileFromUrl(testImageUrl, filename);

const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
marker: "groupofimages_marker",
type: "groupOfImages",
value: [
file
]
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع السمة "files"


const testImageUrl = 'https://your-project.oneentry.cloud/cloud-static/files/project/product/2954/image/7e0a6a70-a23d-410f-8b6a-f8b4f7483244.png';
const filename = 'test-image.png';

/* في سيناريو العالم الحقيقي، يجب عليك استخدام واجهة برمجة التطبيقات لإنشاء ملف من عنوان URL، ولكن من أجل البساطة، سنستخدم عنوان URL للملف المحدد مسبقًا ونستخدم طريقة createFileFromUrl لهذا المثال */
const file = await FileUploading.createFileFromUrl(testImageUrl, filename);

const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "picture_marker",
"type": "file",
"value": [
{
"filename": "files/project/page/10/image/Screenshot-from-2024-05-02-15-23-14.png",
"downloadLink": "http://my-site.com/cloud-static/files/project/page/10/image/Screenshot-from-2024-05-02-15-23-14.png",
"size": 392585
}
]
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع السمة "radioButton" أو "list"



const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "selector_marker",
"type": "list",
"value": [
{
"marker": "list",
"type": "list",
"value": ["1"]
}
]
}
]
};

const response = await FormData.postFormsData(body);


مثال مع نوع السمة "entity" (قائمة متداخلة)



const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "entity_marker",
"type": "entity",
"value": [25, 32, 24]
}
]
};

const response = await FormData.postFormsData(body);

القيمة - معرفات عددية للصفحات ومعرفات نصية للمنتجات. يجب أن تتضمن معرفات المنتجات البادئة 'p-'، على سبيل المثال، 'p-1-'، 'p-2-'، إلخ. p-[parentId]-[productId]


مثال مع نوع السمة "timeInterval"



const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
marker: 'timeinterval_marker',
type: 'timeInterval',
value: [
[
"2025-02-11T16:00:00.000Z",
"2025-02-13T16:00:00.000Z"
]
]
},
]
};

const response = await FormData.postFormsData(body);

القيمة — مصفوفة من مصفوفات الفترات الزمنية بتنسيق ISO 8601. على سبيل المثال 2025-02-11T16:00:00:000Z

2025 — السنة؛ 02 — الشهر؛ 11 — يوم الشهر؛ T — الفاصل بين التاريخ والوقت؛ 16:00:00 — الوقت بتنسيق الساعات:الدقائق:الثواني؛ 000Z — الميلي ثانية وإشارة المنطقة الزمنية. Z تعني أن الوقت محدد بتنسيق UTC.


مثال على الاستجابة:

{
"formData": {
"formIdentifier": "test-form",
"time": "2026-01-07T04:15:52.928Z",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
],
"entityIdentifier": "blog",
"fingerprint": "UQ_ue7gas",
"isUserAdmin": false,
"formModuleId": 2,
"userIdentifier": null,
"parentId": null,
"id": 3481
},
"actionMessage": ""
}

مخطط الاستجابة

المخطط: IPostFormResponse

formData: object
بيانات النموذج.
مثال:

{
"id": 42,
"formIdentifier": "contact_form",
"time": "2023-10-01T12:00:00Z",
"entityIdentifier": "blog",
"isUserAdmin": false,
"formModuleId": 2,
"parentId": null,
"userIdentifier": null,
"formData": [
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]
}

formData.id: number
المعرف الفريد لصفحة النموذج.
مثال: 12345

formData.formIdentifier: string
معرف النموذج.
مثال: "contact_form"

formData.time: string
وقت تقديم النموذج.
مثال: "2023-10-01T12:00:00Z"

formData.entityIdentifier: string
معرف الكيان.
مثال: "blog"

formData.isUserAdmin: boolean
هل المستخدم إداري.
مثال: false

formData.formModuleId: number
معرف وحدة النموذج.
مثال: 2

formData.parentId: any
معرف الوالد.
مثال: null

formData.userIdentifier: any
معرف المستخدم.
مثال: null

formData.formData: FormDataType[]
بيانات حقول النموذج.
مثال:

[
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]

actionMessage: string
رسالة الإجراء لبيانات النموذج.
مثال: "تم تقديم النموذج بنجاح"