Pular para o conteúdo principal

Enviando um formulário com um tipo de campo de entidade (páginas, produtos...)

✅ Propósito do cenário:

  • Obter a configuração do formulário do OneEntry CMS
  • O usuário seleciona um dos elementos da entidade
  • Enviar os dados coletados para uma API do OneEntry.

✅ O que você precisa:

  • Uma PROJECT_URL e APP_TOKEN válidos para autenticação com a API do OneEntry.
  • Um formulário pré-configurado no OneEntry com um marcador (por exemplo, entidade) e campos incluindo um do tipo "entidade".
  • Campos de formulário pré-configurados incluindo um do tipo "entidade".

📌 Importante:

  • Não tratamos erros nesses exemplos.
  • Você pode tratar erros em trycatch ou em uma construção como "await Promise.catch((error) => error)"

Cenário

1. Importar oneEntry e definir url e token

Exemplo:

import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'sua-url-do-projeto';
const APP_TOKEN = 'seu-token-do-app';

2. Criando um cliente API com a função defineOneEntry()

Exemplo:

const { AuthProvider, Orders, Payments, Forms } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

3. Recebemos os dados do formulário do OneEntry CMS para gerar um formulário no frontend com Forms.getFormByMarker()

Exemplo:

const formData = await Forms.getFormByMarker('entity');
Resultado:
{
"id": 2,
"attributeSetId": 1,
"type": "data",
"localizeInfos": {
"title": "Entidade",
"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": "Catálogo",
"parentId": null,
"position": 1,
"selected": true
},
{
"id": 7,
"depth": 0,
"title": "Página premium",
"parentId": null,
"position": 2,
"selected": true
}
],
"validators": {},
"localizeInfos": {
"title": "Entidade"
},
"additionalFields": [],
"isNotificationEmail": null,
"isNotificationPhoneSMS": null,
"isNotificationPhonePush": null
}
]
}

4. Selecione um dos elementos do atributo do tipo entidade e passe para o valor como um array de ids(números) para páginas ou array de strings para produtos

Exemplo:

[
{
"marker": "entity",
"type": "entity",
"value": [
1
]
}
]

5. Envie os dados do formulário com FormData.postFormsData()

Exemplo:

const response = FormData.postFormsData({
formIdentifier: 'entity',
formData: fieldsData,
});
console.log(response);
Resultado:
{
"formData": {
"formIdentifier": "entity",
"time": "2025-04-30T20:11:30.059Z",
"formData": [
{
"marker": "entity",
"type": "entity",
"value": [
1
]
}
],
"id": 67
},
"actionMessage": ""
}

Exemplo final

// 1. Importar oneEntry e definir PROJECT_URL e APP_TOKEN
import { defineOneEntry } from 'oneentry';

const PROJECT_URL = 'sua-url-do-projeto';
const APP_TOKEN = 'seu-token-do-app';

// 2. Criando um cliente API:
const { Forms, FormData } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Recebemos os dados do formulário do OneEntry CMS para gerar um formulário no frontend
const formData = await Forms.getFormByMarker('entity');

// 4. selecione um dos elementos do atributo do tipo entidade
const fieldsData = [
{
marker: 'entity',
type: 'entity',
value: [
1,
],
},
];

// 5. Envie os dados do formulário com FormData.postFormsData()
let response = await FormData.postFormsData({
formIdentifier: 'entity',
formData: fieldsData,
});
// console.log(response);