Asistente
Reparte los datos de un formulario en páginas con Atrás y Siguiente
¿Qué es un asistente?
Un asistente (wizard) convierte un único formulario en una secuencia de páginas. Cada página se genera a partir de un subform y el usuario navega con los botones Atrás y Siguiente. La validación se aplica por página: el usuario no puede avanzar hasta que el paso actual sea válido, salvo que el paso esté marcado como optional.
Al final de cada asistente se añade automáticamente una página de revisión de solo lectura. Muestra cada paso con los valores recogidos para que el usuario los confirme antes de enviar. La página de revisión no se declara en YAML; su título se toma del idioma activo.
Al enviar, los valores recogidos en todos los pasos se combinan en un único conjunto de extravars y se envían al playbook, plantilla o workflow subyacente, exactamente como si el usuario hubiera rellenado un único formulario grande.
Un formulario con wizard no necesita fields propios, pero no puede definir enableForChat, y un subform no puede tener a su vez un wizard. La validación del lanzamiento comprueba el lanzamiento de un asistente paso a paso.
Para ver en qué se diferencia un
wizardde un workflow y cómo se combinan, consulta la entrada de las preguntas frecuentes ¿Qué diferencia hay entre un wizard y un workflow?.
Propiedad a nivel de formulario
Un asistente se activa con una única propiedad a nivel de formulario:
| Atributo | Comentarios |
|---|---|
| wizard array añadido en la versión 6.4.0 | Wizard steps (form-layer) Turn a form into a multi-page wizard. |
Ejemplos:
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 payloadPropiedades de los pasos del asistente
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 | Comentarios |
|---|---|
| basic | |
| subform string / obligatorio | Subform reference
The name of a Ejemplos: 1) Reference a subform |
| name string | Step namespace key
The key under which this step’s values are exposed to later steps via Ejemplos: 1) Override the namespace |
| title string | Page title in the stepper
Title shown in the wizard stepper and at the top of the page. Ejemplos: 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 Valor predeterminado: 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. Ejemplos: 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. Ejemplos: 1) Only show when kind is "vm" |
| optional boolean | Allow skipping this step
When Valor predeterminado: false Ejemplos: 1) Optional advanced page |
| Ejemplos | |
| 1) Minimal wizard (review page is auto-added) 2) Cross-step reference and namespace prefix | |
Combinar un asistente con un workflow
Un asistente puede ir sobre un formulario de workflow. Cuando el defaultModel de cada paso del asistente coincide con la extra_vars_key del nodo correspondiente del workflow, cada playbook o plantilla recibe solo los valores de su propia página del asistente.
Las preguntas frecuentes incluyen un ejemplo completo y la estructura de las extravars combinadas: ¿Qué diferencia hay entre un wizard y un workflow? (sección Combinado (asistente sobre un workflow)).
Un asistente sobre un formulario multistep, que está obsoleto, funciona igual, con la key del paso en lugar de extra_vars_key.
Véase también
Páginas relacionadas y entradas de las preguntas frecuentes:
- Subform: las páginas del asistente se generan a partir de subformularios
- Formularios de workflow: el equivalente del asistente en la capa de ejecución
__parent__en subformularios: cómo hacer referencia a pasos anteriores del asistente desde un paso posterior