Telephone Validation
Proporciona validación para campos de teléfono utilizando la biblioteca libphonenumber de Google, con soporte para detección automática de país y validación de formato.
telephone_validation
Install
composer require 'drupal/telephone_validation:8.x-2.5'
composer require 'drupal/telephone_validation:8.x-2.4'
Overview
Telephone Validation es un módulo de Drupal que aporta una potente validación de números telefónicos al tipo de campo Telephone del core. Utiliza la biblioteca giggsey/libphonenumber-for-php, que es un port PHP de la biblioteca libphonenumber de Google utilizada en dispositivos Android en todo el mundo.
El módulo puede detectar automáticamente a qué país pertenece un número de teléfono y validar si es un número válido para ese país. Soporta dos formatos de validación: E164 (formato internacional con código de país, ej., +12507638884) y Nacional (formato local sin código de país, ej., 2507638884).
La validación puede configurarse globalmente para todos los campos de teléfono, o personalizarse por instancia de campo. Los administradores del sitio pueden restringir los números de teléfono válidos a países específicos, lo que lo hace ideal para aplicaciones específicas de una región.
Features
- Valida los valores de campos de teléfono usando la biblioteca libphonenumber de Google
- Soporta validación de formato internacional E164 (recomendado) con detección automática de país
- Soporta validación de formato Nacional para restricciones de un solo país
- Configurable globalmente con ajustes de validación predeterminados para todos los campos de teléfono
- Ajustes de validación por campo que permiten diferentes reglas para diferentes campos de teléfono
- Validación basada en país que permite restringir a países específicos
- Integración transparente con el sistema de validación de constraints de Drupal
- Validación de elementos de formulario para formularios personalizados usando el tipo de elemento 'tel'
- Formularios de configuración con Ajax para selección dinámica de país basada en el formato
Use Cases
Formulario de contacto internacional
Crea un formulario de contacto que acepte números de teléfono de cualquier país usando el formato E164. Los usuarios deben ingresar su número de teléfono con código de país (ej., +1 555 123 4567), y el sistema valida automáticamente que es un número de teléfono real del país detectado.
Registro específico por país
Para un sitio web que sirve solo a clientes canadienses, configura la validación de teléfono con formato Nacional y Canadá como único país válido. Los usuarios pueden ingresar su número de teléfono sin el código de país (ej., 250 763 8884), y los números inválidos serán rechazados.
Aplicación empresarial multi-región
Para un negocio que opera en múltiples países (ej., EE.UU., Canadá y Reino Unido), usa el formato E164 con estos tres países seleccionados. El sistema solo aceptará números de teléfono válidos de estos países específicos mientras rechaza números de otras regiones.
Validación de formulario personalizado
Añade validación de teléfono a un formulario personalizado usando el tipo de elemento 'tel' con el callback validateTel: '#element_validate' => [['Drupal\telephone_validation\Render\Element\TelephoneValidation', 'validateTel']] y opcionalmente personaliza '#element_validate_settings' para restricciones de formato y país.
Tips
- Usa el formato E164 para aplicaciones internacionales ya que detecta automáticamente el país del número de teléfono
- El formato Nacional es ideal cuando tu aplicación solo sirve a usuarios de un solo país
- Una selección de país vacía significa que todos los países son válidos - útil para aplicaciones verdaderamente globales
- Los ajustes por campo sobrescriben los predeterminados globales, permitiendo diferentes reglas de validación para diferentes casos de uso
- El servicio de validación puede usarse programáticamente: \Drupal::service('telephone_validation.validator')->isValid($number, $format, $countries)
Technical Details
Admin Pages 1
/admin/config/content/telephone_validation
Configura los ajustes de validación predeterminados que se aplicarán a todos los elementos de formulario de teléfono. Estos ajustes sirven como predeterminados y pueden sobrescribirse por campo individual.
Hooks 3
hook_element_info_alter
Añade ajustes de validación predeterminados (#element_validate_settings) al tipo de elemento de formulario 'tel', incluyendo ajustes de formato y país desde la configuración global.
hook_field_info_alter
Añade el constraint de validación 'Telephone' al tipo de campo telephone, habilitando la validación automática de valores de campos de teléfono.
hook_form_FORM_ID_alter (field_config_edit_form)
Altera el formulario de configuración de campo de teléfono para añadir ajustes de validación (casilla de habilitado, selector de formato, selector de país) como ajustes de terceros.
Troubleshooting 4
El módulo requiere la biblioteca giggsey/libphonenumber-for-php. Instala el módulo usando Composer: 'composer require drupal/telephone_validation'. No descargues el módulo manualmente desde drupal.org sin usar Composer.
Asegúrate de que la validación esté habilitada para el campo específico. Ve a la configuración del campo (Administrar campos > Editar campo) y marca la casilla 'Habilitado' bajo los ajustes de 'Validación de teléfono'.
Verifica el ajuste de formato. Si usas el formato Nacional, asegúrate de que el país correcto esté seleccionado. Si usas E164, asegúrate de que el número de teléfono incluya el código de país (ej., +1 para EE.UU./Canadá).
Este es el comportamiento esperado. Cuando se usa el formato Nacional, solo se puede seleccionar un país porque los números nacionales no incluyen códigos de país. Cambia al formato E164 para permitir múltiples países.
Security Notes 3
- El módulo tiene cobertura de seguridad oficial de Drupal, lo que significa que los problemas de seguridad son manejados por el Equipo de Seguridad de Drupal
- La validación de números de teléfono previene el almacenamiento de datos malformados pero no verifica la propiedad del número de teléfono
- Considera verificación adicional (confirmación por SMS) para aplicaciones críticas en seguridad