Webform
Un completo constructor de formularios y gestor de envíos para Drupal que permite la creación de formularios web y cuestionarios con amplias opciones de personalización.
webform
Install
composer require 'drupal/webform:^6.2'
Overview
El módulo Webform es un potente constructor de formularios y gestor de envíos para Drupal 10/11. Proporciona todas las características esperadas de un constructor de formularios empresarial propietario combinadas con la flexibilidad y apertura de Drupal.
El caso de uso principal de este módulo es: Crear un nuevo formulario web o duplicar una plantilla existente; Publicar el formulario web como página, Node o Block; Recopilar envíos; Enviar confirmaciones y notificaciones; Revisar envíos en línea; Descargar envíos como CSV.
El módulo está construido directamente sobre la Form API de Drupal, soportando cada elemento de formulario disponible en Drupal. Ofrece más de 80 tipos de elementos de formulario, lógica condicional, formularios de asistente multipaso, notificaciones por correo electrónico, manejadores de publicación remota, carga de archivos, captura de firma y gestión integral de envíos.
Drupal y el módulo Webform se esfuerzan por ser completamente accesibles para todos los usuarios y constructores de sitios, con tecnologías de asistencia incluyendo lectores de pantalla y acceso por teclado totalmente soportados.
Features
- Constructor de formularios con arrastrar y soltar e interfaz intuitiva para crear y gestionar elementos de formulario
- Más de 80 tipos de elementos de formulario incluyendo HTML básico, HTML5 avanzado, carga de archivos, elementos compuestos y widgets personalizados
- Formularios de asistente multipaso con barra de progreso personalizable y guardado de borradores
- Lógica condicional usando la States API de Drupal para mostrar/ocultar, requerido/opcional y habilitar/deshabilitar
- Manejador de correo electrónico para enviar correos HTML con archivos adjuntos y plantillas personalizables
- Manejador de publicación remota para enviar datos de envío a APIs y servicios externos
- Gestión integral de envíos con visualización, edición, exportación y eliminación
- Exportar envíos a formatos CSV, JSON, YAML o tabla HTML
- Opciones predefinidas reutilizables para menús de selección, casillas de verificación y botones de radio
- Controles de acceso y permisos para creación de formularios, visualización de envíos y administración
- Soporte de tokens para contenido dinámico en mensajes, correos electrónicos y confirmaciones
- CSS y JavaScript personalizados por formulario web
- Soporte Ajax para envío de formularios sin recarga de página
- Programación de formularios con fechas de apertura/cierre
- Límites de envío por usuario o total de envíos
- Guardado de borradores y autocompletado desde envíos anteriores
- Integración con Block y Node para incrustar formularios
- Amplio sistema de plantillas para personalizar la apariencia del formulario
- Comandos Drush para automatización y operaciones por lotes
- Soporte completo de internacionalización y traducción
Use Cases
Formulario de contacto
Cree un formulario de contacto básico con campos de nombre, correo electrónico, asunto y mensaje. Configure un handler de correo electrónico para enviar notificaciones a los administradores del sitio y un correo de confirmación al remitente.
Encuesta/Cuestionario
Construya encuestas de múltiples páginas con escalas Likert, elementos de calificación y lógica condicional. Use la función de vista previa antes del envío y exporte los resultados a CSV para su análisis.
Formulario de solicitud de empleo
Cree una solicitud de empleo completa con carga de archivos para currículums y cartas de presentación. Use elementos compuestos para información de contacto y entity reference para la selección de puestos de trabajo.
Registro de eventos
Construya formularios de registro de eventos con límites de envío por evento. Use el módulo webform_node para adjuntar formularios a tipos de contenido de eventos y rastrear inscripciones.
Formulario de asistente de múltiples pasos
Cree formularios complejos divididos en pasos lógicos usando páginas de asistente. Habilite el guardado de borradores para que los usuarios puedan completar formularios en múltiples sesiones.
Integración con CRM
Use el handler Remote Post para enviar datos del formulario a sistemas CRM externos como Salesforce o HubSpot. Mapee los campos del formulario a parámetros de API.
Recopilación de comentarios
Incruste formularios de comentarios en todo el sitio usando Block. Use lógica condicional para mostrar diferentes preguntas según las respuestas del usuario.
Formularios de pedidos/solicitudes
Cree formularios con campos calculados para totales, captura de firma para acuerdos y archivos adjuntos para documentos de respaldo.
Tips
- Use la pestaña 'Test' en cualquier webform para generar rápidamente envíos de prueba con datos de ejemplo
- Habilite 'Details save' en la configuración avanzada para recordar el estado abierto/cerrado de las secciones de configuración
- Use la edición de código fuente YAML para actualizaciones masivas de etiquetas, descripciones o propiedades de elementos
- Duplique webforms o plantillas existentes para crear rápidamente formularios similares
- Configure los ajustes de handler predeterminados globalmente para reducir la configuración por formulario
- Use elementos calculados con Twig para calcular valores basados en otras entradas del formulario
- Habilite el envío Ajax para una experiencia de usuario más fluida sin recargas de página
- Use el Block de webform para incrustar formularios en barras laterales u otras regiones
- Cree conjuntos de opciones reutilizables para opciones de select/checkbox de uso común
- Use lógica condicional para crear formularios dinámicos que se adapten a la entrada del usuario
- Habilite el registro de envíos para pistas de auditoría detalladas de la actividad del formulario
- Use el handler Remote Post para integrarse con APIs y servicios externos
- Configure la integración con Views para informes de envíos personalizados avanzados
Technical Details
Admin Pages 14
/admin/structure/webform
Página principal de gestión de webforms que lista todos los webforms con opciones para crear, editar, eliminar y gestionar envíos.
/admin/structure/webform/config
Configurar los ajustes predeterminados para todos los webforms incluyendo configuración de página, comportamientos del formulario y opciones de visualización.
/admin/structure/webform/config/elements
Configurar los ajustes predeterminados para elementos del formulario incluyendo etiquetas permitidas, clases CSS y comportamientos predeterminados.
/admin/structure/webform/config/submissions
Configurar los ajustes predeterminados para el manejo de envíos, límites, borradores y purga.
/admin/structure/webform/config/handlers
Configurar valores predeterminados de correo electrónico y gestionar qué handlers están disponibles en el constructor de formularios.
/admin/structure/webform/config/exporters
Configurar los ajustes predeterminados de exportación para descargas de envíos.
/admin/structure/webform/config/libraries
Gestionar bibliotecas externas de JavaScript y CSS utilizadas por el módulo Webform.
/admin/structure/webform/config/advanced
Configurar ajustes avanzados incluyendo opciones de interfaz de usuario, procesamiento por lotes y verificación de requisitos.
/admin/structure/webform/options/manage
Gestionar opciones predefinidas reutilizables para menús desplegables, casillas de verificación y botones de radio.
/admin/structure/webform/submissions/manage
Ver y gestionar todos los envíos de webforms de todos los webforms.
/admin/structure/webform/help
Acceder a documentación de ayuda, vídeos y recursos para el módulo Webform.
/admin/reports/webform-plugins/elements
Ver todos los plugins de elementos de webform disponibles con sus propiedades y configuraciones.
/admin/reports/webform-plugins/handlers
Ver todos los plugins de handlers de webform disponibles para procesar envíos.
/admin/reports/webform-plugins/exporters
Ver todos los plugins de exportadores de webform disponibles para descargar envíos.
Permissions 24
Hooks 24
hook_webform_element_info_alter
Modifica la información proporcionada en la anotación WebformElement.
hook_webform_handler_info_alter
Modifica la información proporcionada en la anotación WebformHandler.
hook_webform_variant_info_alter
Modifica la información proporcionada en la anotación WebformVariant.
hook_webform_element_default_properties_alter
Modifica las propiedades predeterminadas de un elemento de webform.
hook_webform_element_translatable_properties_alter
Modifica las propiedades traducibles de un elemento de webform.
hook_webform_element_configuration_form_alter
Modifica el formulario de configuración de elementos en el constructor de formularios.
hook_webform_element_alter
Modifica los elementos de webform durante el renderizado del formulario.
hook_webform_element_ELEMENT_TYPE_alter
Modifica elementos de webform de un tipo específico durante el renderizado del formulario.
hook_webform_element_access
Verifica y establece la propiedad #access de un elemento.
hook_webform_options_alter
Modifica las opciones de webform.
hook_webform_options_WEBFORM_OPTIONS_ID_alter
Modifica las opciones de webform por ID de opciones.
hook_webform_submission_form_alter
Modifica el formulario de envío de webform antes del renderizado.
hook_webform_admin_third_party_settings_form_alter
Modifica el formulario de configuración de terceros en la administración de webform.
hook_webform_third_party_settings_form_alter
Modifica el formulario de configuración de terceros de webform.
hook_webform_handler_invoke_alter
Actúa sobre un handler de webform cuando se invoca un método.
hook_webform_submissions_pre_purge
Responde antes de que se purguen los envíos de webform.
hook_webform_submissions_post_purge
Responde después de que se purguen los envíos de webform.
hook_webform_access_rules
Proporciona reglas de acceso adicionales para webforms.
hook_webform_access_rules_alter
Modifica la lista de reglas de acceso para webforms.
hook_webform_libraries_info
Devuelve información sobre bibliotecas externas de webform.
hook_webform_libraries_info_alter
Modifica la información de bibliotecas del módulo webform.
hook_webform_help_info
Recopila ayuda adicional de webform desde los módulos.
hook_webform_element_input_masks
Devuelve información sobre máscaras de entrada para elementos de texto.
hook_webform_submission_query_access_alter
Modifica el acceso a consultas de envíos de webform.
Drush Commands 13
drush webform:export [webform_id]
Exportar envíos de formulario web a un archivo
drush webform:import [webform_id] [file]
Importar envíos de formulario web desde un archivo CSV
drush webform:purge [webform_id]
Purgar envíos de formulario web
drush webform:generate [webform_id]
Generar envíos de prueba para un formulario web
drush webform:tidy [module]
Ordenar archivos de configuración YAML del formulario web
drush webform:libraries:status
Mostrar el estado de las bibliotecas de terceros requeridas por webform
drush webform:libraries:download
Descargar bibliotecas de terceros requeridas por webform
drush webform:libraries:remove
Eliminar bibliotecas de terceros descargadas
drush webform:libraries:composer
Generar composer.json para las bibliotecas de webform
drush webform:repair
Reparar configuración y ajustes del formulario web
drush webform:remove:orphans
Eliminar envíos huérfanos donde el formulario web fue eliminado
drush webform:composer:update
Actualizar el composer.json de webform con versiones de bibliotecas
drush webform:docs
Generar documentación HTML para webform
Troubleshooting 8
Verifique que la clave del elemento sea única y no entre en conflicto con palabras reservadas. Ejecute drush webform:repair para solucionar problemas de configuración.
Verifique la configuración del handler de correo electrónico, compruebe la dirección de remitente predeterminada y asegúrese de que su sistema de correo esté correctamente configurado. Habilite la depuración de correo electrónico en la configuración del handler.
Busque errores de JavaScript en la consola del navegador. Asegúrese de que Ajax esté habilitado en la configuración del formulario y que no haya bibliotecas JavaScript en conflicto.
Verifique los límites de tamaño de archivo en la configuración de elementos del webform y la configuración de PHP. Verifique que el directorio de carga tenga los permisos de escritura adecuados.
Verifique que las condiciones de estado estén correctamente configuradas. Tenga en cuenta que algunos estados pueden no funcionar en todos los tipos de elementos. Pruebe con una caché de navegador limpia.
Ejecute drush webform:libraries:download para instalar las bibliotecas requeridas, o habilite el uso de CDN en la configuración.
Verifique la configuración del formulario para asegurarse de que el almacenamiento de envíos esté habilitado. Verifique que el usuario tenga permiso para ver los envíos.
Asegúrese de que el módulo Token esté instalado. Verifique la sintaxis del token y que el token esté disponible en el contexto actual.
Security Notes 10
- Otorgue el permiso 'Administer webform' solo a administradores de confianza ya que proporciona acceso a la configuración global
- El permiso 'Edit webform source' permite a los usuarios modificar render arrays y debe ser restringido
- El permiso 'Edit webform Twig' proporciona acceso a funciones de Twig y debe otorgarse solo a usuarios de confianza
- El permiso 'Edit CSS/JS assets' permite la inyección de código personalizado y debe ser restringido
- Los elementos de carga de archivos deben configurarse con restricciones de tipo de archivo y límites de tamaño apropiados
- Habilite CAPTCHA u otra protección contra spam en formularios públicos
- Use la configuración de formulario confidencial para restringir el acceso solo a usuarios autenticados
- Considere deshabilitar el rastreo de IP para formularios sensibles a la privacidad
- Revise las configuraciones de handlers para asegurarse de que los datos sensibles no se expongan en correos electrónicos o envíos remotos
- Use controles de acceso en webforms individuales para restringir quién puede ver, editar o eliminar envíos