Field Validation

Proporciona reglas de validación de campos personalizables para cualquier tipo de entidad a través de una interfaz de administración intuitiva.

field_validation
16,416 sites
93
drupal.org

Overview

El módulo Field Validation permite a los administradores del sitio especificar reglas de validación personalizadas para campos en cualquier tipo de entidad de contenido (nodes, usuarios, términos de taxonomía, etc.) sin escribir código. A diferencia de la validación de campos del core que está limitada a restricciones básicas, este módulo proporciona un conjunto completo de 20 reglas de validación integradas que cubren casos de uso comunes como validación de correo electrónico, expresiones regulares, valores únicos, rangos numéricos y más.

El módulo utiliza el sistema de plugins de Drupal, permitiendo a los desarrolladores extenderlo con reglas de validación personalizadas. Las reglas de validación se organizan en "conjuntos de reglas" que se adjuntan a combinaciones específicas de tipo de entidad y bundle. Cada regla puede configurarse para aplicarse a roles de usuario específicos y puede incluir lógica condicional basada en valores de otros campos.

El módulo se integra perfectamente con el sistema de validación de restricciones de Drupal, lo que significa que los errores de validación aparecen en línea en los formularios igual que los errores de validación del core. También soporta reemplazo de tokens en mensajes de error y configuraciones de reglas para mensajes de validación dinámicos.

Features

  • 20 tipos de reglas de validación integradas incluyendo regex, correo electrónico, teléfono, URL, valores únicos, rangos numéricos/enteros, rangos de fechas, conteo de palabras, longitud de caracteres y más
  • Crear conjuntos de reglas de validación por tipo de entidad y bundle (por ejemplo, un conjunto de reglas para nodes de tipo Artículo, otro para nodes de tipo Página)
  • Aplicación de reglas basada en roles - configurar reglas para que solo se apliquen a roles de usuario específicos
  • Ejecución condicional de reglas - las reglas pueden aplicarse basándose en valores de otros campos usando operadores como igual, no igual, mayor que, menor que, vacío, no vacío
  • Soporte de tokens en mensajes de error y algunas configuraciones de reglas para validación dinámica
  • Integración con el sistema de validación de restricciones del core de Drupal para una visualización consistente de errores
  • Arquitectura de plugins extensible - los desarrolladores pueden crear reglas de validación personalizadas
  • Soporte tanto para campos base como para campos configurables
  • Soporte para campos multivalor con validación de conteo de elementos
  • Selección de columna de campo para tipos de campo complejos (por ejemplo, validar solo la columna 'value' de un campo de texto)

Use Cases

Imponer SKUs de producto únicos

Los sitios de comercio electrónico pueden usar la regla de validación Unique para asegurar que los campos de SKU de productos contengan valores únicos en todos los productos. Configura la regla con alcance establecido en 'bundle' para restringir la unicidad solo a productos, no a otros tipos de contenido.

Validar números de teléfono por país

Los sitios internacionales pueden validar campos de número de teléfono usando formatos específicos de cada país. La regla de validación Phone soporta 24 países con sus patrones específicos de números telefónicos, asegurando que los usuarios ingresen números con formato correcto.

Requerir longitud mínima de contenido

Los flujos de trabajo editoriales pueden imponer calidad de contenido requiriendo un conteo mínimo de palabras o longitud de caracteres para campos de cuerpo. Las reglas Length y Words pueden asegurar que los artículos cumplan requisitos mínimos de contenido antes de publicar.

Prevenir profanidad en contenido generado por usuarios

Los sitios de comunidad pueden usar la regla Words Blocklist para prevenir que los usuarios envíen contenido que contenga profanidad o términos inapropiados. Crea una lista separada por comas de palabras bloqueadas.

Protección anti-spam con Honeypot

Añade un campo de texto oculto usando CSS y aplica la regla de validación 'Must be empty'. Los bots de spam llenarán todos los campos mientras que los usuarios reales no verán ni llenarán el campo oculto, bloqueando envíos de spam automatizados.

Validar rangos de fechas para eventos

Los sitios de eventos pueden usar la regla Date Range para asegurar que las fechas de eventos caigan dentro de rangos aceptables. La función de ciclo permite validación de patrones recurrentes, como asegurar que los eventos solo ocurran en ciertos días de la semana.

Confirmar dirección de correo electrónico

Usa la regla Equal Values para requerir que los usuarios ingresen su dirección de correo electrónico dos veces y asegurar que ambas entradas coincidan, reduciendo errores tipográficos en direcciones de correo.

Validar formatos de ID personalizados

Las organizaciones con formatos de ID específicos (por ejemplo, 'ABC-123-456') pueden usar la regla Pattern para imponer estos formatos. La sintaxis de patrón simplificada (a=alfa, 9=dígito, #=alfanumérico) facilita definir patrones personalizados.

Validación específica por rol

Aplicar diferentes reglas de validación según los roles de usuario. Por ejemplo, los administradores podrían estar exentos de ciertas reglas de validación mientras que los usuarios regulares deben cumplir. Configura las reglas para aplicarse solo a roles específicos.

Validación condicional de campos

Aplicar validación solo cuando se cumplan ciertas condiciones. Por ejemplo, requerir un campo de número de teléfono solo cuando la casilla 'Contactar por teléfono' está seleccionada, usando los ajustes de condición en la regla.

Tips

  • Usa el módulo Token para crear mensajes de error dinámicos que incluyan el nombre del campo, tipo de entidad o información del usuario
  • Combina múltiples reglas en el mismo campo para validación completa (por ejemplo, Length + Plain Text + Blocklist)
  • Usa la función de Condición para crear validación condicional que solo se aplique cuando otros campos tengan valores específicos
  • Exporta conjuntos de reglas a archivos de configuración para despliegue entre entornos usando la exportación/importación de configuración de Drupal
  • Crea reglas de validación personalizadas extendiendo ConfigurableFieldValidationRuleBase e implementando el método validate()
  • La regla Pattern es más simple que Regex para validaciones de formato comunes - usa 'a' para letras, '9' para dígitos, '#' para alfanuméricos
  • Para campos multivalor, la mayoría de las reglas validan cada valor individualmente - usa Item Count para validar el número de valores
  • Los campos base (como el título del node) también son soportados - aparecen en el desplegable de campos junto a los campos del bundle

Technical Details

Admin Pages 4
Conjunto de reglas de validación de campos /admin/structure/field_validation

Lista todos los conjuntos de reglas de validación de campos configurados. Cada conjunto de reglas está asociado con una combinación específica de tipo de entidad y bundle. Desde esta página puedes añadir nuevos conjuntos de reglas, editar los existentes o eliminarlos.

Añadir conjunto de reglas de validación de campos /admin/structure/field_validation/add

Crear un nuevo conjunto de reglas de validación seleccionando el tipo de entidad y bundle de destino. Solo puede existir un conjunto de reglas por combinación de tipo de entidad/bundle.

Editar conjunto de reglas de validación de campos /admin/structure/field_validation/manage/{rule_set}

Gestionar las reglas de validación dentro de un conjunto de reglas. Ver, reordenar, editar o eliminar reglas existentes. Añadir nuevas reglas de los tipos de reglas de validación disponibles.

Añadir regla /admin/structure/field_validation/manage/{rule_set}/add/{rule_type}

Configurar una nueva regla de validación. Todas las reglas comparten configuraciones comunes (selección de campo, mensaje de error, restricciones de rol, condiciones) más opciones específicas de cada regla.

Permisos 1
Administrar reglas de validación de campos

Permite acceso para configurar reglas de validación de campos. Este permiso está marcado como 'restringir acceso' lo que significa que solo debe otorgarse a roles de administrador de confianza.

Hooks 2
hook_entity_bundle_field_info_alter

Usado por Field Validation para adjuntar FieldValidationConstraint a campos de bundle que tienen reglas de validación definidas.

hook_entity_base_field_info_alter

Usado por Field Validation para adjuntar FieldValidationConstraint a campos base que tienen reglas de validación definidas.

Troubleshooting 5
Las reglas de validación no se aplican

Limpiar todas las cachés después de añadir o modificar reglas. El módulo usa el sistema de restricciones de Drupal que almacena en caché las definiciones de campos. Ejecuta 'drush cr' o limpia las cachés vía la interfaz de administración.

No se puede crear conjunto de reglas - 'Ya existe un conjunto de reglas de validación de campos para este bundle'

Cada combinación de tipo de entidad/bundle solo puede tener un conjunto de reglas. Edita el conjunto de reglas existente para añadir más reglas en lugar de crear uno nuevo.

La validación de unicidad permite duplicados

Verifica la configuración de 'Alcance'. El alcance 'Entidad' verifica unicidad en todas las entidades de ese tipo, mientras que el alcance 'Bundle' solo verifica dentro del mismo bundle. También verifica los ajustes 'Publicado' y 'Por usuario' que limitan aún más el alcance.

La expresión regular no funciona

Asegúrate de que tu patrón regex incluya delimitadores (por ejemplo, '/patrón/'). La regla Regex espera expresiones regulares compatibles con Perl. Prueba tu patrón usando un verificador PCRE en línea.

La validación de conteo de elementos se activa con el botón 'Añadir más'

Esta es una limitación conocida con campos de cardinalidad ilimitada. La documentación del módulo recomienda establecer #limit_validation_errors en el botón 'Añadir más' a un array vacío vía código personalizado.

Security Notes 4
  • El permiso 'administer field validation rule set' está marcado como 'restringir acceso' y solo debe otorgarse a administradores de confianza
  • Los patrones de expresiones regulares (regla Regex) se ejecutan sobre entrada del usuario - asegúrate de que los patrones estén probados apropiadamente para evitar vulnerabilidades ReDoS
  • La regla Blocklist realiza coincidencias sin distinción de mayúsculas/minúsculas - asegúrate de que tu lista de bloqueo cubra variaciones comunes de términos prohibidos
  • La técnica honeypot Must Be Empty ayuda a prevenir spam pero debe combinarse con otras medidas anti-spam para protección integral