Pular para o conteúdo principal

Introdução

Gerencie envios de formulários e recupere dados de formulários.

Mais informações sobre formulários no painel de administração do OneEntry: https://doc.oneentry.cloud/docs/category/forms


🎯 O que este módulo faz?

O módulo FormData permite que você envie formulários preenchidos pelos usuários (formulários de contato, pesquisas, registros) para o OneEntry e recupere, atualize ou exclua dados enviados para análise, relatórios e gerenciamento.

Pense nisso como seu gerenciador de envios de formulários - os usuários enviam formulários, você os armazena no OneEntry e os recupera sempre que precisar visualizar respostas, gerar relatórios ou analisar dados.

🚀 Início Rápido

Inicialize o módulo a partir de defineOneEntry:


const { FormData } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);

Construa o corpo a partir da configuração do formulário e envie-o:

// 1. Fetch the form to read its module config.
const form = await Forms.getFormByMarker("contact_form");
const formModuleConfigId = form.moduleFormConfigs[0].id;
const moduleEntityIdentifier = form.moduleFormConfigs[0].entityIdentifiers[0].id;

// 2. Submit the user's input.
const response = await FormData.postFormsData({
formIdentifier: "contact_form",
formModuleConfigId,
moduleEntityIdentifier,
replayTo: null,
status: "sent",
formData: [
{ marker: "name", type: "string", value: "Jack" },
],
});

console.log(response);

Para ler os envios posteriormente, chame getFormsDataByMarker(marker, formModuleConfigId, body?, isExtended?, langCode?, offset?, limit?).

✨ Conceitos Chave

O que são Dados de Formulário?

Dados de formulário são as informações que os usuários enviam por meio de um formulário. Cada envio é construído a partir de um array formData de objetos de campo (marker, type, value) além dos identificadores de configuração do formulário.

Estrutura do corpo do envio

postFormsData aceita um IBodyPostFormData:

const body = {
formIdentifier: 'contact_form', // Form marker
formModuleConfigId: 9, // Module config ID (from the form)
moduleEntityIdentifier: 'blog', // Module entity identifier (from the form)
replayTo: null, // Email address to reply to (optional)
status: 'sent', // Submission status (optional)
formData: [ // Form fields
{ marker: 'name', type: 'string', value: 'Test' },
],
};

📋 O que Você Precisa Saber

O envio requer a configuração do formulário

Antes de enviar, você precisa de três valores, todos lidos do próprio formulário:

  1. Marcador do formulário (formIdentifier) — o identificador de texto do formulário
  2. formModuleConfigId — da moduleFormConfigs do formulário
  3. moduleEntityIdentifier — da moduleFormConfigs do formulário
const form = await Forms.getFormByMarker('contact_form');
const formModuleConfigId = form.moduleFormConfigs[0].id;
const moduleEntityIdentifier = form.moduleFormConfigs[0].entityIdentifiers[0].id;

Armazene esses valores em cache para não precisar buscar o formulário a cada envio.

Campos do formData

Cada entrada no array formData descreve um campo:

  • marker — deve corresponder a um marcador de campo da definição do formulário
  • type — o tipo do campo (usado para validação e manipulação de arquivos)
  • value — a entrada do usuário

Campos do tipo file / image / groupOfImages são enviados automaticamente através do módulo FileUploading quando você passa um File/FileList/Blob como o value.

Status do envio

Use o campo status para rastrear o estado do envio. "sent" é o valor típico para novos envios; você pode posteriormente mover um envio para um estado revisado/arquivado com updateFormsDataStatusByid().

Atualizando e excluindo envios

Os envios não são imutáveis. Usuários autenticados podem alterá-los ou removê-los:

  • updateFormsDataByid(id, body) — edite um envio armazenado pelo id 🔐
  • updateFormsDataStatusByid(id, body) — altere apenas o status de um envio pelo id 🔐
  • deleteFormsDataByid(id) — exclua um envio pelo id 🔐

Lendo envios

getFormsDataByMarker retorna envios para um formulário. Navegue pelos resultados com offset / limit, e refine com o body da solicitação (por exemplo, status, dateFrom, dateTo, userIdentifier).


📊 Tabela de Referência Rápida

MétodoDescriçãoCaso de Uso
postFormsData()Enviar novos dados de formulárioO usuário envia um formulário de contato
getFormsDataByMarker()Obter envios para formulário específicoVisualizar todos os envios do formulário de contato
updateFormsDataByid() 🔐Atualizar um envio de formulário pelo idEditar um envio armazenado
updateFormsDataStatusByid() 🔐Atualizar o status de um envio pelo idMarcar como processado/arquivado
deleteFormsDataByid() 🔐Excluir um envio de formulário pelo idRemover um envio

🔐 métodos requerem autorização do usuário — veja AuthProvider. postFormsData() e getFormsDataByMarker() são públicos.

❓ Perguntas Frequentes (FAQ)

Como eu envio um formulário?

Busque o formulário com Forms.getFormByMarker(), leia formModuleConfigId e moduleEntityIdentifier de suas moduleFormConfigs, construa o corpo e, em seguida, chame FormData.postFormsData(body). Veja a seção Início Rápido acima.


Posso atualizar ou excluir dados de formulário enviados?

Sim. Os envios podem ser alterados ou removidos via SDK (esses requerem autorização do usuário):

  • updateFormsDataByid() — edite um envio armazenado pelo id
  • updateFormsDataStatusByid() — altere apenas o status de um envio pelo id
  • deleteFormsDataByid() — exclua um envio pelo id

Como eu lido com uploads de arquivos em formulários?

Passe um File / FileList / Blob como o value de um campo e postFormsData() o enviará para você, ou faça o upload separadamente com o módulo FileUploading e inclua as URLs retornadas em formData.


Como eu filtro envios por data?

Passe dateFrom e dateTo no body da solicitação de getFormsDataByMarker().


Como eu pagino por todos os envios?

Use os argumentos offset e limit de getFormsDataByMarker().


🎓 Melhores Práticas

  • Armazene em cache a configuração do formulário (formModuleConfigId, moduleEntityIdentifier) para evitar buscar o formulário a cada envio.
  • Valide campos obrigatórios no lado do cliente antes de enviar; o OneEntry também valida no lado do servidor.
  • Paginar leituras com offset / limit em vez de buscar tudo de uma vez.
  • Referencie formulários por marcador, não por ID numérico.
  • Use o campo status (e updateFormsDataStatusByid) para organizar envios.
  • Trate erros com try/catch e verifique a forma de retorno IError.

🔗 Documentação Relacionada