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
342,228 sites
431
drupal.org

Install

Drupal 10 v6.2.9
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
Webforms /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.

Webforms: Configuración de formularios /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.

Webforms: Configuración de elementos /admin/structure/webform/config/elements

Configurar los ajustes predeterminados para elementos del formulario incluyendo etiquetas permitidas, clases CSS y comportamientos predeterminados.

Webforms: Configuración de envíos /admin/structure/webform/config/submissions

Configurar los ajustes predeterminados para el manejo de envíos, límites, borradores y purga.

Webforms: Configuración de handlers /admin/structure/webform/config/handlers

Configurar valores predeterminados de correo electrónico y gestionar qué handlers están disponibles en el constructor de formularios.

Webforms: Configuración de exportadores /admin/structure/webform/config/exporters

Configurar los ajustes predeterminados de exportación para descargas de envíos.

Webforms: Configuración de bibliotecas /admin/structure/webform/config/libraries

Gestionar bibliotecas externas de JavaScript y CSS utilizadas por el módulo Webform.

Webforms: Configuración avanzada /admin/structure/webform/config/advanced

Configurar ajustes avanzados incluyendo opciones de interfaz de usuario, procesamiento por lotes y verificación de requisitos.

Webforms: Opciones /admin/structure/webform/options/manage

Gestionar opciones predefinidas reutilizables para menús desplegables, casillas de verificación y botones de radio.

Webforms: Envíos /admin/structure/webform/submissions/manage

Ver y gestionar todos los envíos de webforms de todos los webforms.

Webforms: Ayuda /admin/structure/webform/help

Acceder a documentación de ayuda, vídeos y recursos para el módulo Webform.

Plugins de Webform: Elementos /admin/reports/webform-plugins/elements

Ver todos los plugins de elementos de webform disponibles con sus propiedades y configuraciones.

Plugins de Webform: Handlers /admin/reports/webform-plugins/handlers

Ver todos los plugins de handlers de webform disponibles para procesar envíos.

Plugins de Webform: Exportadores /admin/reports/webform-plugins/exporters

Ver todos los plugins de exportadores de webform disponibles para descargar envíos.

Permissions 24
Administrar webforms

Permite la administración de la configuración y opciones globales de YAML. Acceso restringido.

Administrar envíos de webform

Permite acceder, actualizar y eliminar todos los envíos de webform. Acceso restringido con implicaciones de seguridad.

Administrar acceso a elementos de webform

Restringe el acceso a elementos de webform a ciertos roles y usuarios.

Administrar vista general de webform

Filtra webforms y realiza acciones masivas en la página de vista general.

Acceder a la página de vista general de webform

Obtiene una vista general de todos los webforms.

Acceder a la página de ayuda de webform

Permite a los usuarios ver la página de ayuda del módulo Webform.

Acceder a la página de envíos de usuario de webform

Permite al usuario ver sus envíos a través de la pestaña 'Submissions' en su página de perfil.

Crear webforms

Permite la creación de nuevos webforms.

Editar cualquier webform

Permite gestionar cualquier webform y sus resultados. Acceso restringido.

Editar webform propio

Permite gestionar webforms creados por el usuario y sus resultados.

Eliminar cualquier webform

Permite eliminar cualquier webform. Acceso restringido.

Eliminar webform propio

Permite eliminar webforms creados por el usuario.

Editar código fuente de webform

Editar el código fuente de webform permite a los usuarios alterar y posiblemente romper el array de renderizado de un webform. Acceso restringido.

Editar plantillas Twig de webform

Editar plantillas Twig en línea permite a los usuarios acceder a cualquier dato expuesto por las funciones de Twig. Acceso restringido.

Editar recursos CSS/JS de webform

Permite a los administradores adjuntar CSS y JavaScript personalizados a un webform. Acceso restringido.

Editar variantes de webform

Permite a los administradores crear variaciones de un webform. Acceso restringido.

Acceder a la configuración propia de webform

Permite a usuarios y aplicaciones acceder a la configuración de webform creada por el usuario.

Acceder a cualquier configuración de webform

Permite a usuarios y aplicaciones acceder a la configuración de cualquier webform.

Ver cualquier envío de webform

Permite ver todos los envíos.

Ver envío propio de webform

Permite ver los envíos propios de todos los webforms.

Editar cualquier envío de webform

Permite actualizar todos los envíos.

Editar envío propio de webform

Permite actualizar los envíos propios de todos los webforms.

Eliminar cualquier envío de webform

Permite eliminar todos los envíos.

Eliminar envío propio de webform

Permite eliminar los envíos propios de todos los webforms.

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
Los elementos del formulario no se guardan

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.

Los correos electrónicos no se envían

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.

Ajax no funciona

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.

Las cargas de archivos fallan

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.

La lógica condicional no funciona

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.

Faltan bibliotecas de terceros

Ejecute drush webform:libraries:download para instalar las bibliotecas requeridas, o habilite el uso de CDN en la configuración.

Los envíos no aparecen

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.

El reemplazo de tokens no funciona

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