Olá, Comunidade Discourse Meta!
Estamos animados para apresentar um novo recurso experimental, modelos de formulário. Com ele, você pode impor um formulário estruturado com validação de dados como parte do fluxo de criação de tópicos.

Ativando o recurso
O recurso está oculto atrás de uma flag experimental em todo o site. Para ativá-lo, basta ativar a configuração do site experimental_form_templates em
Admin ▸ Settings.
Gerenciando os modelos
Os modelos de formulário podem ser criados, editados e excluídos em
Admin ▸ Customize ▸ Templates (/admin/customize/form-templates/).
Lá, você verá uma tabela com uma lista dos modelos existentes no fórum. Você pode editar, excluir e visualizar qualquer modelo existente ou criar novos. A tabela também mostra as categorias em que cada modelo está atualmente ativo.
Os modelos são definidos em uma estrutura YAML. Você pode digitá-los manualmente ou usar os botões “Adicionar” na parte superior, que anexarão um trecho de código YAML de exemplo ao final, definindo um determinado tipo de entrada.
Aqui está um exemplo completo de YAML, com todos os tipos de campo:
- type: input
id: name
attributes:
label: "Nome completo"
placeholder: "ex. João Silva"
description: "Qual é o seu nome completo?"
validations:
required: true
minimum: 2
maximum: 100
- type: textarea
id: introduction
attributes:
label: "Introdução"
placeholder: "Uma breve introdução"
description: "Escreva uma breve introdução sobre você"
validations:
required: true
minimum: 10
maximum: 500
- type: dropdown
id: fav-animal
attributes:
label: "Animal favorito"
description: "Selecione seu animal favorito"
none_label: "Selecione uma opção"
choices:
- "Cachorro"
- "Gato"
- "Outro"
validations:
required: true
- type: multi-select
id: comm-channel
attributes:
label: "Canais de comunicação:"
description: "Selecione seus canais de comunicação preferidos:"
none_label: "Selecione uma opção"
choices:
- "Email"
- "Telefone"
- "Mensageiro"
- type: upload
id: cat-photo
attributes:
label: "Foto do gato"
description: "Envie uma foto do seu gato (ou de qualquer gato)"
file_types: ".jpg, .png"
allow_multiple: false
- type: checkbox
id: accept-terms
attributes:
label: "Li e concordo com os termos"
description: "Você precisa aceitar os termos para continuar"
validations:
required: true
Validações
Para cada campo, você pode adicionar opções de validação que devem ser aprovadas antes de poder criar o formulário. Para uma lista de validações disponíveis, clique no botão Validations acima do editor de código. Isso mostrará a sintaxe para cada opção de validação e descreverá seu uso pretendido.
Opções de validação
| Chave | Tipo | Descrição |
|---|---|---|
| required | boolean | Exige que o campo seja preenchido para enviar o formulário |
| minimum | integer | Para campos de texto, especifica o número mínimo de caracteres permitidos |
| maximum | integer | Para campos de texto, especifica o número máximo de caracteres permitidos |
| pattern | regex string | Para campos de texto, uma expressão regular que especifica a entrada permitida |
| type | string | Para campos de entrada, você pode especificar o tipo de entrada que deve ser esperado (text|email|date|number|url|tel|color) |
Aplicando um modelo a uma categoria
Depois de criar um modelo de formulário, você vai querer aplicá-lo a uma categoria. Para fazer isso, vá para as configurações da categoria à qual deseja aplicar o modelo.
Selecione o menu Template e, em seguida, à direita, use o interruptor para ativar os modelos de formulário. Uma vez ativado, você pode usar o menu suspenso para adicionar um ou mais modelos a uma categoria.
Preenchendo o formulário
Depois que um modelo for aplicado a uma categoria, o formulário do modelo aparecerá automaticamente quando você criar um tópico e selecionar a categoria que tem o modelo. Se a categoria tiver mais de um modelo atribuído a ela, você também verá um seletor para alternar entre os modelos disponíveis.
Ao preencher o formulário, ele seguirá quaisquer validações especificadas na definição do modelo de formulário, e somente após ser válido você poderá clicar em
Create Topic e ele gerará o conteúdo do tópico a partir de todos os campos de entrada.
Finalmente, após o envio, o conteúdo do tópico é composto por todos os campos preenchidos:
Preenchendo valores de formulário antecipadamente
Você também pode preencher valores de formulário antecipadamente chamando /new-topic com parâmetros que correspondam aos IDs de campo definidos no modelo de formulário. Por exemplo, para o modelo usado anteriormente como exemplo:
/new-topic?name=João%20Smith&favorite-animal=Cat
Roteiro
- Armazenar a saída JSON nos dados do tópico quando um tópico é criado
- Alternar para ainda poder selecionar e usar o compositor livre em categorias com modelos de formulário
Como você pode nos ajudar
Adoraríamos ouvir seu feedback sobre este novo recurso. Se você é um administrador e gostaria de experimentá-lo em seu fórum, pode ativar a configuração experimental_form_templates e começar a usá-los imediatamente!
Por favor, crie novos tópicos marcados com form-templates para compartilhar suas experiências, relatar quaisquer bugs ou fornecer sugestões.
Obrigado por nos ajudar a tornar o Discourse melhor!









