Assistent
Reparteix les dades d’un formulari en diverses pàgines amb Enrere i Següent
Què és un assistent?
Un assistent (wizard) converteix un sol formulari en una seqüència de pàgines. Cada pàgina es genera a partir d’un subform i l’usuari hi navega amb els botons Enrere i Següent. La validació s’aplica pàgina per pàgina: l’usuari no pot avançar fins que el pas actual sigui vàlid, tret que el pas estigui marcat com a optional.
Al final de cada assistent s’hi afegeix automàticament una pàgina de revisió de només lectura. Mostra cada pas amb els valors recollits perquè l’usuari els pugui confirmar abans d’enviar. La pàgina de revisió no es declara en YAML; el seu títol surt de l’idioma actiu.
En enviar, els valors recollits de tots els passos es fusionen en un sol conjunt d’extravars i s’envien al playbook, la plantilla o el workflow subjacent, exactament com si l’usuari hagués omplert un únic formulari gran.
Un formulari amb un wizard no necessita fields propis, però no pot definir enableForChat, i un subform no pot tenir un wizard propi. La validació del llançament comprova el llançament d’un assistent pas a pas.
Per saber en què es diferencia un
wizardd’un workflow, i com es combinen, consulta l’entrada de les PMF Quina diferència hi ha entre un assistent i un workflow?.
Propietat a nivell de formulari
Un assistent s’activa amb una única propietat a nivell de formulari:
| Atribut | Comentaris |
|---|---|
| wizard array afegit a la versió 6.4.0 | Wizard steps (form-layer) Turn a form into a multi-page wizard. |
Exemples:
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 payloadPropietats dels passos de l’assistent
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.
| Atribut | Comentaris |
|---|---|
| basic | |
| subform string / obligatori | Subform reference
The name of a Exemples: 1) Reference a subform |
| name string | Step namespace key
The key under which this step’s values are exposed to later steps via Exemples: 1) Override the namespace |
| title string | Page title in the stepper
Title shown in the wizard stepper and at the top of the page. Exemples: 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 Per defecte: 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. Exemples: 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. Exemples: 1) Only show when kind is "vm" |
| optional boolean | Allow skipping this step
When Per defecte: false Exemples: 1) Optional advanced page |
| Exemples | |
| 1) Minimal wizard (review page is auto-added) 2) Cross-step reference and namespace prefix | |
Combinar un assistent amb un workflow
Un assistent es pot posar per sobre d’un formulari de workflow. Quan el defaultModel de cada pas de l’assistent coincideix amb l’extra_vars_key del node corresponent del workflow, cada playbook o plantilla rep només els valors de la seva pròpia pàgina de l’assistent.
Les PMF contenen un exemple complet i l’estructura de les extravars fusionades: Quina diferència hi ha entre un assistent i un workflow? (secció Combinat (assistent per sobre d’un workflow)).
Un assistent en un formulari multistep, que està obsolet, funciona de la mateixa manera, amb la key del pas en lloc d’extra_vars_key.
Vegeu també
Pàgines relacionades i entrades de les PMF:
- Subformulari: les pàgines de l’assistent es generen a partir de subformularis
- Formularis de workflow: l’equivalent de l’assistent a la capa d’execució
__parent__als subformularis: com fer referència als passos anteriors de l’assistent des d’un pas posterior