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

تقديم نموذج مع نوع حقل كيان (صفحات، منتجات...)

في هذا المثال، نوضح كيفية تقديم نموذج يتضمن نوع حقل كيان، مثل الصفحات أو المنتجات، باستخدام واجهة برمجة التطبيقات 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": "كيان",
"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": "كتالوج",
"parentId": null,
"position": 1,
"selected": true
},
{
"id": 7,
"depth": 0,
"title": "صفحة مميزة",
"parentId": null,
"position": 2,
"selected": true
}
],
"validators": {},
"localizeInfos": {
"title": "كيان"
},
"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. استيراد defineOneEntry من SDK وتحديد PROJECT_URL و APP_TOKEN
import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

// 2. إنشاء عميل API:
const { Forms, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. نتلقى بيانات النموذج من منصة OneEntry لإنشاء نموذج على الواجهة الأمامية
const formData = await Forms.getFormByMarker('entity');

// 4. الحصول على إعدادات إضافية لتقديم النموذج
const moduleFormConfig = formData.moduleFormConfigs[0];

// 5. اختر أحد عناصر نوع حقل الكيان
const fieldsData = [
{
marker: 'entity',
type: 'entity',
value: [
1,
],
},
];

// 6. نشر بيانات النماذج باستخدام 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);