Assistente
Dividir os dados de um formulário por páginas com Voltar e Seguinte
O que é um assistente?
Um assistente (wizard) transforma um único formulário numa sequência de páginas. Cada página é construída a partir de um subform e o utilizador navega com os botões Voltar e Seguinte. A validação é aplicada página a página: o utilizador não pode avançar enquanto o passo atual não for válido, a menos que o passo esteja marcado como optional.
No fim de cada assistente é acrescentada automaticamente uma página de revisão só de leitura. Enumera cada passo com os valores recolhidos, para que o utilizador os possa confirmar antes de submeter. A página de revisão não é declarada em YAML; o seu título vem do idioma ativo.
Ao submeter, os valores recolhidos em todos os passos são juntados num único conjunto de extravars e enviados para o playbook, template ou workflow subjacente, exatamente como se o utilizador tivesse preenchido um único formulário grande.
Um formulário com wizard não precisa dos seus próprios fields, mas não pode definir enableForChat, e um subform não pode ter ele próprio um wizard. A validação no lançamento verifica o lançamento de um assistente passo a passo.
Para saber como um
wizarddifere de um workflow e como os dois se combinam, consulte a entrada das FAQ Qual é a diferença entre um assistente e um workflow?.
Propriedade ao nível do formulário
Um assistente ativa-se com uma única propriedade ao nível do formulário:
| Atributo | Comentários |
|---|---|
| wizard array adicionado na versão 6.4.0 | Wizard steps (form-layer) Turn a form into a multi-page wizard. |
Exemplos:
1) Three-step wizard
name: Provision host
type: ansible
roles:
- default
playbook: provision.yml
wizard:
- subform: basics
title: Basics
- subform: network
title: Network
defaultModel: net
- subform: advanced
title: Advanced
optional: true
when: $(__parent__.basics.kind) === 'vm'2) Wizard mapped one-to-one onto multistep (defaultModel + key)
name: Provision and verify host
type: multistep
roles:
- default
wizard:
- subform: basics
title: Basics
defaultModel: basics # wraps fields under `basics`
- subform: network
title: Network
defaultModel: network # wraps fields under `network`
steps:
- name: Create host
type: ansible
playbook: create_host.yml
key: basics # receives only the basics payload
- name: Configure network
type: ansible
playbook: configure_network.yml
key: network # receives only the network payloadPropriedades dos passos do assistente
Each wizard step references a subform and is rendered as its own page with Back and Next navigation. The user must validate one step before moving to the next; data from earlier steps is available in later steps via __parent__.
Review step is automatic. A read-only summary page that lists every step’s input is appended as the last page of the wizard. You do not declare it in YAML — its title is taken from the active locale (“Summary” / “Samenvatting” / “Zusammenfassung” / …).
Wizard vs Multistep. steps splits the execution into multiple sequential jobs (each step is its own playbook/template). wizard splits the input of a single form into multiple pages — only one job runs at the end. The two can be combined: a type: multistep form can also have a wizard: block to gather its extravars across pages.
| Atributo | Comentários |
|---|---|
| basic | |
| subform string / obrigatório | Subform reference
The name of a Exemplos: 1) Reference a subform |
| name string | Step namespace key
The key under which this step’s values are exposed to later steps via Exemplos: 1) Override the namespace |
| title string | Page title in the stepper
Title shown in the wizard stepper and at the top of the page. Exemplos: 1) Custom title |
| help string | Help text shown on this page
Help text rendered on the wizard page. Defaults to the subform’s own |
| showHelp boolean | Show help on load
When Predefinição: false |
| defaultModel string | Wrap this step's output under a prefix
Wraps every field of this step under the given object key in the final extravars payload. Useful when you reuse a generic subform and want its values namespaced. Exemplos: 1) Wrap network fields under `net` |
| workflow | |
| when expression | Conditionally show this step
When the expression evaluates falsy, the step is hidden entirely — the user never sees it and its values are not collected. Exemplos: 1) Only show when kind is "vm" |
| optional boolean | Allow skipping this step
When Predefinição: false Exemplos: 1) Optional advanced page |
| Exemplos | |
| 1) Minimal wizard (review page is auto-added) 2) Cross-step reference and namespace prefix | |
Combinar um assistente com um workflow
Um assistente pode ser colocado por cima de um formulário de workflow. Quando o defaultModel de cada passo do assistente corresponde ao extra_vars_key do nó de workflow correspondente, cada playbook ou template recebe só os valores da sua própria página do assistente.
As FAQ contêm um exemplo completo e a estrutura das extravars juntadas: Qual é a diferença entre um assistente e um workflow? (secção Combinados (assistente por cima de um workflow)).
Um assistente num formulário multistep, que está obsoleto, funciona da mesma forma, com a key do passo em vez de extra_vars_key.
Ver também
Páginas e entradas das FAQ relacionadas:
- Subform: as páginas do assistente são construídas a partir de subformulários
- Formulários de workflow: o equivalente do assistente na camada de execução
__parent__nos subformulários: como referir passos anteriores do assistente a partir de um passo posterior