Nhảy đến nội dung

postFormsData

Gửi dữ liệu biểu mẫu đến nền tảng OneEntry.

🎯 Phương thức này làm gì?

Phương thức này gửi dữ liệu biểu mẫu đến nền tảng OneEntry. Hãy nghĩ về nó như việc nhấn "Gửi" trên một biểu mẫu liên hệ - nó gửi tất cả thông tin người dùng nhập (tên, email, tin nhắn, tệp, v.v.) đến máy chủ.

Trường hợp sử dụng:

  • 📝 Biểu mẫu liên hệ
  • 📋 Biểu mẫu đăng ký
  • 💬 Biểu mẫu phản hồi
  • 📤 Tải tệp lên
  • 🎫 Phiếu hỗ trợ

📖 Giải thích đơn giản

Khi một người dùng điền vào một biểu mẫu trên trang web của bạn, bạn cần gửi dữ liệu đó đến một nơi nào đó. Phương thức này làm chính xác điều đó - nó lấy tất cả các trường biểu mẫu (văn bản, số, tệp, v.v.) và gửi chúng đến OneEntry.

Hãy nghĩ về nó như:

Người dùng điền biểu mẫu → Mã của bạn gọi postFormsData() → Dữ liệu được lưu trong OneEntry ✅

🚀 Ví dụ siêu đơn giản (Bắt đầu từ đây!)

Tình huống: Bạn có một biểu mẫu liên hệ chỉ với một trường tên.

// Bước 1: Người dùng điền biểu mẫu (ví dụ, nhập "John Doe")
// Bước 2: Gửi đến OneEntry

const response = await FormData.postFormsData({
formIdentifier: "contact_us", // 👈 Tên biểu mẫu của bạn
formModuleConfigId: 2, // 👈 ID cấu hình biểu mẫu (từ quản trị viên OneEntry)
moduleEntityIdentifier: "blog", // 👈 Nơi lưu trữ (từ OneEntry)
replayTo: null, // 👈 Email trả lời (tùy chọn)
status: "sent", // 👈 "sent" hoặc "draft"
formData: [ // 👈 Dữ liệu biểu mẫu thực tế
{
marker: "name", // 👈 Tên trường
type: "string", // 👈 Loại trường
value: "John Doe" // 👈 Thông tin người dùng nhập
}
]
});

// ✅ Xong! Biểu mẫu đã được gửi thành công
console.log("Biểu mẫu đã được gửi, ID:", response.formData.id);

Chỉ vậy thôi! Bây giờ hãy xem cách xử lý các loại trường khác nhau...


📋 Những điều bạn cần biết trước khi sử dụng

Trước khi gọi phương thức này, bạn cần 3 điều sau từ bảng điều khiển quản trị OneEntry:

  1. formIdentifier - Tên duy nhất của biểu mẫu của bạn (ví dụ, "contact_us")
  2. formModuleConfigId - ID cấu hình biểu mẫu (một số, ví dụ, 2)
  3. moduleEntityIdentifier - Nơi lưu trữ dữ liệu (ví dụ, "blog", "contacts")

Làm thế nào để tìm những điều này?

  • Đăng nhập vào OneEntry Admin
  • Đi đến phần Biểu mẫu
  • Sao chép các giá trị từ cấu hình biểu mẫu của bạn

🔧 Chữ ký phương thức

FormData.postFormsData(

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

);

Sơ đồ tham số

Sơ đồ (body)

body(bắt buộc): IBodyPostFormData
Nội dung yêu cầu
ví dụ:

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

body.formIdentifier(bắt buộc): string
Định danh văn bản (đánh dấu) của biểu mẫu.
ví dụ: "form"

body.formModuleConfigId(bắt buộc): number
Định danh duy nhất của cấu hình mô-đun biểu mẫu.
ví dụ: 2

body.moduleEntityIdentifier(bắt buộc): string
Định danh văn bản (đánh dấu) của thực thể mô-đun.
ví dụ: "blog"

body.replayTo(bắt buộc): string | null
Email để trả lời.
ví dụ: "some@email.com"

body.status(bắt buộc): string
Trạng thái của biểu mẫu.
ví dụ: "sent"

body.formData(bắt buộc): FormDataType[]
Mảng các đối tượng dữ liệu biểu mẫu.
ví dụ:

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

body.fileQuery: IUploadingQuery
Truy vấn tệp tùy chọn để tải tệp lên.
ví dụ:

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

langCode: string
Mã ngôn ngữ. Mặc định: "en_US"
ví dụ: "en_US"

Ví dụ

Ví dụ tối thiểu


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);

Ví dụ với thuộc tính loại đơn giản "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);


Ví dụ với thuộc tính loại đơn giản "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);


Ví dụ với thuộc tính loại đơn giản "text" (Chỉ một trong htmlValue, plainValue hoặc mdValue có thể được cung cấp)


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);


Ví dụ với thuộc tính loại đơn giản "textWithHeader" (Chỉ một trong htmlValue, plainValue hoặc mdValue có thể được cung cấp)


const body = {
"formIdentifier": "contact_us",
"formModuleConfigId": 2,
"moduleEntityIdentifier": "blog",
"replayTo": null,
"status": "sent",
"formData": [
{
marker: "textwithheader_marker",
type: "textWithHeader",
value: [
{
"header": "Headline",
"htmlValue": "<p>Hello World</p>",
"params": {
"isImageCompressed": true,
"editorMode": "html"
}
}
]
}
]
};

const response = await FormData.postFormsData(body);


Ví dụ với thuộc tính loại "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';

/* Trong kịch bản thực tế, bạn nên sử dụng API Tệp để tạo tệp từ URL nhưng do đơn giản, chúng tôi sẽ sử dụng URL tệp đã định nghĩa trước sử dụng phương thức createFileFromUrl cho dụ này */
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);


Ví dụ với thuộc tính loại "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';

/* Trong kịch bản thực tế, bạn nên sử dụng API Tệp để tạo tệp từ URL nhưng do đơn giản, chúng tôi sẽ sử dụng URL tệp đã định nghĩa trước sử dụng phương thức createFileFromUrl cho dụ này */
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);


Ví dụ với thuộc tính loại "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';

/* Trong kịch bản thực tế, bạn nên sử dụng API Tệp để tạo tệp từ URL nhưng do đơn giản, chúng tôi sẽ sử dụng URL tệp đã định nghĩa trước sử dụng phương thức createFileFromUrl cho dụ này */
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);


Ví dụ với thuộc tính loại "radioButton" hoặc "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);


Ví dụ với thuộc tính loại "entity" (danh sách lồng nhau)


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);

Giá trị - các định danh số cho các trang và các định danh chuỗi cho các sản phẩm. Các định danh cho sản phẩm nên bao gồm tiền tố 'p-', ví dụ, 'p-1-', 'p-2-', v.v. p-[parentId]-[productId]


Ví dụ với thuộc tính loại "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);

Giá trị — mảng các mảng khoảng thời gian theo định dạng ISO 8601. ví dụ 2025-02-11T16:00:00:000Z

2025 — năm; 02 — tháng; 11 — ngày trong tháng; T — dấu phân cách giữa ngày và giờ; 16:00:00 — thời gian theo định dạng giờ:phút:giây; 000Z — mili giây và chỉ định múi giờ. Z có nghĩa là thời gian được chỉ định theo định dạng UTC.


Ví dụ trả về:

{
"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": ""
}

Sơ đồ phản hồi

Sơ đồ: IPostFormResponse

formData: object
Dữ liệu biểu mẫu.
ví dụ:

{
"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
Định danh duy nhất của trang biểu mẫu.
ví dụ: 12345

formData.formIdentifier: string
Định danh của biểu mẫu.
ví dụ: "contact_form"

formData.time: string
Thời gian gửi biểu mẫu.
ví dụ: "2023-10-01T12:00:00Z"

formData.entityIdentifier: string
Định danh thực thể.
ví dụ: "blog"

formData.isUserAdmin: boolean
Người dùng có phải là quản trị viên không.
ví dụ: false

formData.formModuleId: number
Định danh mô-đun biểu mẫu.
ví dụ: 2

formData.parentId: any
Định danh cha.
ví dụ: null

formData.userIdentifier: any
Định danh người dùng.
ví dụ: null

formData.formData: FormDataType[]
Dữ liệu các trường biểu mẫu.
ví dụ:

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

actionMessage: string
Thông điệp hành động cho dữ liệu biểu mẫu.
ví dụ: "Biểu mẫu đã được gửi thành công"