إرسال نموذج مع نوع حقل كيان (صفحات، منتجات...)
في هذا المثال، نوضح كيفية إرسال نموذج يتضمن نوع حقل كيان، مثل الصفحات أو المنتجات، باستخدام واجهة برمجة التطبيقات OneEntry.
✅ هدف السيناريو:
- الحصول على تكوين النموذج من منصة OneEntry
- يقوم المستخدم باختيار أحد عناصر الكيان
- إرسال البيانات المجمعة إلى واجهة برمجة التطبيقات OneEntry.
✅ ما تحتاجه:
- عنوان URL صالح للمشروع PROJECT_URL ورمز التطبيق APP_TOKEN للمصادقة مع واجهة برمجة التطبيقات OneEntry.
- نموذج مُعد مسبقًا في OneEntry مع علامة (مثل، كيان) وحقول تتضمن واحدة من نوع "كيان".
- حقول نموذج مُعدة مسبقًا تتضمن واحدة من نوع "كيان".
📌 مهم:
- هذه الأمثلة لا تتضمن معالجة الأخطاء.
- يمكنك إدارة الأخطاء باستخدام كتلة try-catch أو من خلال استخدام بناء مثل await Promise.catch((error) => error).
السيناريو
1. استيراد defineOneEntry من SDK وتحديد عنوان URL ورمز التوكن
مثال:
import { defineOneEntry } from 'oneentry';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
2. إنشاء عميل API باستخدام دالة defineOneEntry()
مثال:
const { Forms, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
3. نتلقى بيانات النموذج من منصة OneEntry لتوليد نموذج على الواجهة الأمامية باستخدام Forms.getFormByMarker()
مثال:
const formData = await Forms.getFormByMarker('entity');
النتيجة:
{
"id": 2,
"attributeSetId": 1,
"type": "data",
"localizeInfos": {
"title": "Entity",
"titleForSite": "",
"successMessage": "",
"unsuccessMessage": "",
"urlAddress": "",
"database": "0",
"script": "0"
},
"version": 17,
"position": 1,
"identifier": "entity",
"processingType": "script",
"templateId": null,
"attributes": [
{
"type": "entity",
"marker": "entity",
"isLogin": null,
"isSignUp": null,
"position": 1,
"settings": {},
"isVisible": true,
"listTitles": [
{
"id": 1,
"depth": 0,
"title": "Catalog",
"parentId": null,
"position": 1,
"selected": true
},
{
"id": 7,
"depth": 0,
"title": "Premium page",
"parentId": null,
"position": 2,
"selected": true
}
],
"validators": {},
"localizeInfos": {
"title": "Entity"
},
"additionalFields": [],
"isNotificationEmail": null,
"isNotificationPhoneSMS": null,
"isNotificationPhonePush": null
}
],
"moduleFormConfigs": [
{
"id": 1,
"moduleIdentifier": "content",
"isGlobal": false,
"isClosed": false,
"viewOnlyUserData": false,
"commentOnlyUserData": false,
"entityIdentifiers": [
{
"id": "services",
"isNested": false
}
]
}
]
}
الحصول على إعدادات إضافية لإرسال النموذج
مثال:
const moduleFormConfig = formData.moduleFormConfigs[0];
5. اختر أحد عناصر نوع خاصية الكيان ومرر القيمة كصفيف من المعرفات (الأرقام) للصفحات أو صفيف من السلاسل للمنتجات
مثال:
[
{
"marker": "entity",
"type": "entity",
"value": [
1
]
}
]
6. إرسال بيانات النماذج باستخدام FormData.postFormsData()
مثال:
const response = FormData.postFormsData({
formIdentifier: 'entity',
formData: fieldsData,
formModuleConfigId: moduleFormConfig.id,
moduleEntityIdentifier:
moduleFormConfig.entityIdentifiers[0].id,
replayTo: null,
status: 'sent',
});
console.log(response);
النتيجة:
{
"formData": {
"formIdentifier": "entity",
"time": "2025-12-02T19:08:18.617Z",
"formData": [
{
"marker": "entity",
"type": "entity",
"value": [
1
]
}
],
"entityIdentifier": "services",
"fingerprint": "UQ_rrofe2",
"isUserAdmin": false,
"formModuleId": 1,
"userIdentifier": null,
"parentId": null,
"id": 129
},
"actionMessage": ""
}
المثال النهائي
// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';
const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';
// 2. Creating an API client:
const { Forms, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});
// 3. We receive form data from OneEntry Platform to generate a form on the frontend
const formData = await Forms.getFormByMarker('entity');
// 4. Get additional settings for the form submission
const moduleFormConfig = formData.moduleFormConfigs[0];
// 5. select one of the elements of the entity type attribute
const fieldsData = [
{
marker: 'entity',
type: 'entity',
value: [
1,
],
},
];
// 6. Post forms data with FormData.postFormsData()
let response = await FormData.postFormsData({
formIdentifier: 'entity',
formData: fieldsData,
formModuleConfigId: moduleFormConfig.id,
moduleEntityIdentifier:
moduleFormConfig.entityIdentifiers[0].id,
replayTo: null,
status: 'sent',
});
// console.log(response);