postFormsData
Envoyer les données du formulaire à la plateforme OneEntry.
🎯 Que fait cette méthode ?
Cette méthode soumet les données du formulaire à la plateforme OneEntry. Pensez-y comme à un clic sur "Soumettre" sur un formulaire de contact - cela envoie toutes les saisies de l'utilisateur (nom, email, message, fichiers, etc.) au serveur.
Cas d'utilisation :
- 📝 Formulaires de contact
- 📋 Formulaires d'inscription
- 💬 Formulaires de retour d'expérience
- 📤 Téléchargements de fichiers
- 🎫 Tickets de support
📖 Explication simple
Lorsque qu'un utilisateur remplit un formulaire sur votre site web, vous devez envoyer ces données quelque part. Cette méthode fait exactement cela - elle prend tous les champs du formulaire (texte, nombres, fichiers, etc.) et les envoie à OneEntry.
Considérez cela comme :
User fills form → Your code calls postFormsData() → Data saved in OneEntry ✅
🚀 Exemple super simple (Commencez ici !)
Scénario : Vous avez un formulaire de contact avec juste un champ de nom.
// Step 1: User fills the form (e.g., enters "John Doe")
// Step 2: Send it to OneEntry
const response = await FormData.postFormsData({
formIdentifier: "contact_us", // 👈 Your form's name
formModuleConfigId: 2, // 👈 Form config ID (from OneEntry admin)
moduleEntityIdentifier: "blog", // 👈 Where to save it (from OneEntry)
replayTo: null, // 👈 Reply email (optional)
status: "sent", // 👈 "sent" or "draft"
formData: [ // 👈 The actual form data
{
marker: "name", // 👈 Field name
type: "string", // 👈 Field type
value: "John Doe" // 👈 User's input
}
]
});
// ✅ Done! Form submitted successfully
console.log("Form submitted, ID:", response.formData.id);
C'est tout ! Maintenant, voyons comment gérer différents types de champs...
📋 Ce que vous devez savoir avant d'utiliser
Avant d'appeler cette méthode, vous avez besoin de ces 3 éléments du panneau d'administration OneEntry :
- formIdentifier - Le nom unique de votre formulaire (par exemple, "contact_us")
- formModuleConfigId - ID de configuration du formulaire (un nombre, par exemple, 2)
- moduleEntityIdentifier - Où stocker les données (par exemple, "blog", "contacts")
Comment les trouver ?
- Connectez-vous à OneEntry Admin
- Allez dans la section Formulaires
- Copiez les valeurs de votre configuration de formulaire
🔧 Signature de la méthode
FormData.postFormsData(
body*,
body.formIdentifier*,
body.formModuleConfigId*,
body.moduleEntityIdentifier*,
body.replayTo*,
body.status*,
body.formData*,
body.fileQuery,
langCode
);
Schéma des paramètres
Schéma (body)
body(obligatoire): IBodyPostFormData
Corps de la requête
exemple :
{
"formIdentifier": "test-form",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
]
}
body.formIdentifier(obligatoire): string
Identifiant textuel (marqueur) du formulaire.
exemple : "form"
body.formModuleConfigId(obligatoire): number
L'identifiant unique de la configuration du module de formulaire.
exemple : 2
body.moduleEntityIdentifier(obligatoire): string
Identifiant textuel (marqueur) de l'entité du module.
exemple : "blog"
body.replayTo(obligatoire): string | null
Email pour répondre.
exemple : "some@email.com"
body.status(obligatoire): string
Statut du formulaire.
exemple : "sent"
body.formData(obligatoire): FormDataType[]
Tableau d'objets de données de formulaire.
exemple :
[
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]
body.fileQuery: IUploadingQuery
Requête de fichier optionnelle pour le téléchargement de fichiers.
exemple :
{
"type": "page",
"entity": "editor",
"id": 3787
}
fileQuery.type(obligatoire): string
Type, détermine le nom du dossier dans le stockage.
exemple : "page"
fileQuery.entity(obligatoire): string
Nom de l'entité à partir de laquelle le fichier est téléchargé, détermine le nom du dossier dans le stockage.
exemple : "editor"
fileQuery.id(obligatoire): number
Identifiant de l'objet à partir duquel le fichier est téléchargé, détermine le nom du dossier dans le stockage.
exemple : 3787
fileQuery.width: number
Paramètre de largeur.
exemple : 0
fileQuery.height: number
Paramètre de hauteur.
exemple : 0
fileQuery.compress: boolean
Indicateur d'optimisation (compression) pour les images.
exemple : true
langCode: string
Code de langue. Par défaut : "en_US"
exemple : "en_US"
Exemples
Exemple minimal
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "last_name", "type": "string", "value": "Andrey" } ]};
const response = await FormData.postFormsData(body);
Exemple avec un type simple d'attribut "string", "number", "float"
const body = { "formIdentifier": "test-form", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "string_marker", "type": "string", "value": "Username" }, { "marker": "number_marker", "type": "number", "value": 1 }, { "marker": "float_marker", "type": "float", "value": 2.256 } ]};
const response = await FormData.postFormsData(body);
Exemple avec un type simple d'attribut "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);
Exemple avec un type simple d'attribut "text" (Un seul de htmlValue, plainValue ou mdValue peut être fourni)
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { "marker": "about_marker", "type": "text", "value": [ { "htmlValue": "<p>Hello world</p>", "params": { "isImageCompressed": true, "editorMode": "html" } } ] } ]};
const response = await FormData.postFormsData(body);
Exemple avec un type simple d'attribut "textWithHeader" (Un seul de htmlValue, plainValue ou mdValue peut être fourni)
const body = { "formIdentifier": "contact_us", "formModuleConfigId": 2, "moduleEntityIdentifier": "blog", "replayTo": null, "status": "sent", "formData": [ { marker: "textwithheader_marker", type: "textWithHeader", value: [ { "header": "Titre", "htmlValue": "<p>Hello World</p>", "params": { "isImageCompressed": true, "editorMode": "html" } } ] } ]};
const response = await FormData.postFormsData(body);
Exemple avec un type d'attribut "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';
/* Dans un scénario réel, vous devriez utiliser l'API File pour créer un fichier à partir de l'URL, mais pour des raisons de simplicité, nous allons utiliser une URL de fichier prédéfinie et utiliser la méthode createFileFromUrl pour cet exemple */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);
Exemple avec un type d'attribut "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';
/* Dans un scénario réel, vous devriez utiliser l'API File pour créer un fichier à partir de l'URL, mais pour des raisons de simplicité, nous allons utiliser une URL de fichier prédéfinie et utiliser la méthode createFileFromUrl pour cet exemple */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);
Exemple avec un type d'attribut "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';
/* Dans un scénario réel, vous devriez utiliser l'API File pour créer un fichier à partir de l'URL, mais pour des raisons de simplicité, nous allons utiliser une URL de fichier prédéfinie et utiliser la méthode createFileFromUrl pour cet exemple */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);
Exemple avec un type d'attribut "radioButton" ou "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);
Exemple avec un type d'attribut "entity" (liste imbriquée)
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);
Valeur - identifiants numériques pour les pages et identifiants textuels pour les produits. Les identifiants pour les produits doivent inclure le préfixe 'p-', par exemple, 'p-1-', 'p-2-', etc. p-[parentId]-[productId]
Exemple avec un type d'attribut "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);
valeur — tableau de tableaux d'intervalles au format ISO 8601. par exemple 2025-02-11T16:00:00:000Z
2025 — année ; 02 — mois ; 11 — jour du mois ; T — séparateur entre la date et l'heure ; 16:00:00 — heure au format heures:minutes:secondes ; 000Z — millisecondes et indication de fuseau horaire. Z signifie que l'heure est spécifiée au format UTC.
Exemple de retour :
{
"formData": {
"formIdentifier": "test-form",
"time": "2026-04-15T14:20:00.731Z",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
],
"userIdentifier": "test@test.ru",
"entityIdentifier": "blog",
"fingerprint": "UQ_mo04zghpfp7i0o0li6c88sb4b4nlqu",
"isUserAdmin": false,
"formModuleId": 2,
"parentId": null,
"id": 5811
},
"actionMessage": ""
}
Schéma de réponse
Schéma : IPostFormResponse
formData: object
Données du formulaire.
exemple :
{
"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
L'identifiant unique de la page du formulaire.
exemple : 12345
formData.formIdentifier: string
L'identifiant du formulaire.
exemple : "contact_form"
formData.time: string
L'heure de la soumission du formulaire.
exemple : "2023-10-01T12:00:00Z"
formData.entityIdentifier: string
L'identifiant de l'entité.
exemple : "blog"
formData.isUserAdmin: boolean
L'utilisateur est-il administrateur ?
exemple : false
formData.formModuleId: number
L'identifiant du module de formulaire.
exemple : 2
formData.userIdentifier: string | null
L'identifiant de l'utilisateur.
exemple : null
formData.parentId: number | null
L'identifiant parent.
exemple : null
formData.formData: FormDataType[]
Données des champs du formulaire.
exemple :
[
{
"marker": "name",
"type": "string",
"value": "Jack"
}
]
actionMessage: string
Message d'action pour les données du formulaire (peut être localisé).
exemple : "Formulaire soumis avec succès"