Forms Steps
Proporciona una interfaz de usuario para crear flujos de trabajo de formularios multipaso utilizando los modos de formulario de entidades, permitiendo formularios multipaso rápidos y configurables en Drupal.
forms_steps
Install
composer require 'drupal/forms_steps:8.x-1.7'
Overview
Forms Steps es un módulo potente que permite a los administradores del sitio crear flujos de trabajo de formularios multipaso sin escribir código. Aprovecha los modos de formulario de entidades de Drupal para dividir la creación/edición de entidades en múltiples páginas secuenciales.
El módulo introduce una entidad de configuración llamada 'Forms Steps' que define un flujo de trabajo completo, incluyendo pasos (cada uno apuntando a un tipo de entidad, bundle y modo de formulario), pasos de progreso para la visualización de la barra de progreso, y políticas de redirección para el comportamiento posterior a la finalización.
Cada instancia de flujo de trabajo se rastrea mediante un UUID único (instance_id), permitiendo a los usuarios navegar entre pasos mientras se mantiene la consistencia de datos. El módulo crea automáticamente rutas dinámicas para cada URL de paso y proporciona un bloque de barra de progreso que puede colocarse en cualquier parte de la página.
Forms Steps también dispara eventos cuando los usuarios transicionan entre pasos, permitiendo a los desarrolladores implementar lógica personalizada como inicio de sesión automático de usuario después del registro o validación de datos.
Features
- Crear flujos de trabajo de formularios multipaso a través de una interfaz de administración intuitiva sin codificación
- Soporte para cualquier tipo de entidad con campos (Node, User, Taxonomy, entidades personalizadas)
- Aprovechar los modos de formulario existentes de Drupal para mostrar diferentes campos en cada paso
- Generación dinámica de rutas con seguimiento de instancias basado en UUID para continuidad del flujo de trabajo
- Bloque de barra de progreso configurable con enlaces de pasos personalizables y controles de visibilidad
- Etiquetas de botones personalizables (Enviar, Cancelar, Eliminar, Anterior) por paso
- Soporte de botón anterior para navegación hacia atrás dentro de los flujos de trabajo
- Múltiples políticas de redirección después de completar el flujo de trabajo (ruta interna, URL externa, route, vista de entidad)
- StepChangeEvent para lógica personalizada durante las transiciones de pasos
- Comando Drush para importar entidades existentes en instancias de flujo de trabajo
- Gestión de instancias de flujo de trabajo con persistencia respaldada por base de datos
- Limpieza automática de instancias de flujo de trabajo cuando se eliminan las entidades de origen
- Soporte para creación de cuentas de usuario a través de múltiples pasos con consideraciones de seguridad
- Soporte de tema de administración para páginas de pasos cuando está configurado
Use Cases
Creación de nodos multipaso
Crear un tipo de contenido con muchos campos y dividirlos en múltiples páginas. Por ejemplo, un formulario de solicitud de empleo podría tener el Paso 1 para información personal, el Paso 2 para experiencia laboral, el Paso 3 para educación y el Paso 4 para carga de documentos. Cada paso muestra solo los campos relevantes usando modos de formulario.
Asistente de registro de usuario
Dividir el registro de usuario en múltiples pasos: información básica de cuenta, detalles de perfil y preferencias. Usar StepChangeEvent para iniciar sesión automáticamente al usuario después del primer paso, permitiendo que los pasos subsiguientes actualicen su perfil. Configurar el paso final para redirigir a la página de perfil del usuario.
Proceso de pedido/pago
Crear un flujo de pago multipaso para una solución de comercio personalizada. El Paso 1 recolecta artículos del carrito, el Paso 2 maneja información de envío, el Paso 3 gestiona detalles de pago y el Paso 4 muestra confirmación. El bloque de barra de progreso ayuda a los usuarios a rastrear su posición en el proceso.
Aplicación de encuesta o cuestionario
Construir encuestas complejas con múltiples páginas de preguntas. Cada página (paso) puede mostrar diferentes campos o grupos de preguntas. Los pasos de progreso muestran a los usuarios cuánto han avanzado en la encuesta, con enlaces opcionales para volver a secciones anteriores.
Flujo de trabajo de incorporación
Guiar a nuevos usuarios a través de un proceso de configuración después del registro. Cada paso recolecta diferente información: configuración de perfil, preferencias de notificación, completar tutorial. Usar la política de redirección para enviar usuarios al panel de control después de completar todos los pasos.
Importación de contenido con datos existentes
Usar el comando drush para importar contenido existente en un flujo de trabajo. Por ejemplo, migrar contenido heredado a un nuevo flujo de trabajo de edición multipaso adjuntando nodos existentes a pasos específicos del flujo de trabajo.
Tips
- Crear modos de formulario dedicados para cada paso mostrando solo los campos relevantes para esa parte del flujo de trabajo
- Usar la función del botón Anterior para permitir a los usuarios volver y revisar/editar pasos anteriores
- Configurar la política de redirección a 'Entidad actual' para mostrar a los usuarios su contenido completado después del paso final
- Colocar el bloque de barra de progreso en una ubicación prominente y estilizarlo con clases CSS (previous-step, active, next-step)
- Para flujos de trabajo de registro de usuario, siempre hacer que el primer paso cree el usuario y los pasos subsiguientes actualicen el perfil
- Usar StepChangeEvent para implementar validación personalizada, notificaciones o manipulación de datos entre pasos
- Exportar configuraciones de Forms Steps para sincronizar flujos de trabajo entre entornos usando Configuration Management
- Habilitar 'Mostrar enlaces solo si los pasos correspondientes han sido guardados' para evitar que los usuarios salten pasos a través de enlaces de la barra de progreso
- Probar flujos de trabajo tanto con nuevas entidades como con entidades existentes (a través del comando drush) para asegurar comportamiento adecuado
Technical Details
Admin Pages 7
/admin/config/workflow/forms_steps
Página principal de administración que lista todos los flujos de trabajo de Forms Steps configurados. Desde aquí puedes agregar, editar, eliminar flujos de trabajo y ver las instancias de flujo de trabajo.
/admin/config/workflow/forms_steps/add
Crear un nuevo flujo de trabajo de Forms Steps proporcionando una etiqueta, nombre de máquina y descripción opcional.
/admin/config/workflow/forms_steps/edit/{forms_steps}
Configurar todos los aspectos de un flujo de trabajo de Forms Steps incluyendo pasos, barra de progreso y configuración de redirección.
/admin/config/workflow/forms_steps/{forms_steps}/add_step
Agregar un nuevo paso al flujo de trabajo de Forms Steps configurando tipo de entidad, bundle, modo de formulario, URL y configuración de botones.
/admin/config/workflow/forms_steps/{forms_steps}/add_progress_step
Agregar un paso de progreso para la barra de progreso visual que indica la progresión del flujo de trabajo.
/admin/config/workflow/forms_steps/workflows/list
Ver todas las instancias de flujo de trabajo que han sido creadas, mostrando los datos de seguimiento del flujo de trabajo para cada sesión de formulario multipaso.
/admin/config/workflow/forms_steps/settings
Configuración global para el módulo Forms Steps.
Permissions 2
Hooks 6
hook_form_alter
Usado internamente por Forms Steps para interceptar formularios en rutas de Forms Steps y agregar manejo de navegación de pasos.
hook_entity_type_alter
Registra automáticamente clases de formulario para modos de formulario de entidad usados en flujos de trabajo de Forms Steps.
hook_entity_insert
Crea registros de seguimiento de flujo de trabajo cuando se crean entidades dentro de un flujo de trabajo de Forms Steps.
hook_entity_presave
Actualiza registros de seguimiento de flujo de trabajo cuando se actualizan entidades dentro de un flujo de trabajo de Forms Steps.
hook_entity_predelete
Elimina automáticamente instancias de flujo de trabajo cuando se elimina la entidad de origen.
hook_theme
Define el hook de tema item_list__forms_steps para renderizado de barra de progreso.
Drush Commands 1
drush forms_steps:attach-entity
Adjuntar una entidad existente a una instancia de flujo de trabajo de Forms Steps. Útil para importar contenido existente en flujos de trabajo multipaso o enlazar programáticamente entidades a flujos de trabajo.
Troubleshooting 6
Algunos tipos de entidad (como User) no tienen clases de formulario predeterminadas para modos de formulario personalizados. Implementar hook_entity_type_alter() en un módulo personalizado para asignar una clase de formulario: $entity_types['user']->setFormClass('my_form_mode', 'Drupal\user\ProfileForm');
Asegurarse de que el modo de formulario esté habilitado para el bundle seleccionado en Administración > Estructura > [Tipo de entidad] > Gestionar visualización de formulario. Limpiar cachés después de agregar nuevos modos de formulario.
Verificar que los pasos de progreso estén configurados para el flujo de trabajo y que el bloque de barra de progreso esté colocado en una región visible a través de Administración > Estructura > Diseño de bloques. El bloque solo se renderiza en rutas de Forms Steps.
Para registro de usuario anónimo a través de múltiples pasos, habilitar inicio de sesión automático (deshabilitar verificación de correo en configuración de cuenta) o implementar un suscriptor de StepChangeEvent para iniciar sesión del usuario después del primer paso.
Esto ocurre cuando se accede a un paso con un instance_id inválido. Asegurarse de que los usuarios sigan el flujo de trabajo desde el primer paso, o usar el comando drush para adjuntar entidades existentes a instancias de flujo de trabajo.
Cada paso debe usar el mismo tipo de entidad y bundle si se edita una sola entidad a través de los pasos. Diferentes tipos de entidad/bundles en pasos crean entidades separadas. Verificar la configuración de pasos para consistencia.
Security Notes 5
- El módulo respeta el sistema de acceso a entidades de Drupal - los usuarios deben tener permisos de crear/actualizar para los tipos de entidad usados en los pasos
- El registro de usuario anónimo a través de múltiples pasos requiere consideración cuidadosa de seguridad - el módulo no puede otorgar permisos de actualización a usuarios anónimos para entidades que acaban de crear
- Para flujos de trabajo de registro de usuario, considerar usar inicio de sesión automático después del primer paso o requerir verificación de correo electrónico
- Los IDs de instancia de flujo de trabajo son UUIDs pasados en URLs - aunque no son fácilmente adivinables, proporcionan acceso directo al estado del flujo de trabajo
- El permiso 'administer forms_steps' otorga control total sobre las configuraciones de flujo de trabajo - asignar cuidadosamente