Telephone Validation

Googleのlibphonenumberライブラリを使用して電話番号フィールドのバリデーションを提供し、自動的な国検出とフォーマット検証をサポートします。

telephone_validation
12,690 sites
25
drupal.org

インストール

Drupal 11, 10 v8.x-2.5
composer require 'drupal/telephone_validation:8.x-2.5'
Drupal 9, 8 v8.x-2.4
composer require 'drupal/telephone_validation:8.x-2.4'

概要

Telephone Validationは、コアのTelephoneフィールドタイプに強力な電話番号バリデーション機能を追加するDrupalモジュールです。世界中のAndroidデバイスで使用されているGoogleのlibphonenumberライブラリのPHP版であるgiggsey/libphonenumber-for-phpライブラリを活用しています。

このモジュールは、電話番号がどの国に属するかを自動的に検出し、その国で有効な電話番号かどうかを検証できます。E164(国コード付きの国際形式、例:+12507638884)とNational(国コードなしのローカル形式、例:2507638884)の2つのバリデーション形式をサポートしています。

バリデーションはすべての電話番号フィールドに対してグローバルに設定することも、フィールドインスタンスごとにカスタマイズすることもできます。サイト管理者は有効な電話番号を特定の国に制限でき、地域限定のアプリケーションに最適です。

Features

  • Googleのlibphonenumberライブラリを使用した電話番号フィールド値のバリデーション
  • 自動国検出機能付きのE164国際形式バリデーション(推奨)をサポート
  • 単一国制限用のNational形式バリデーションをサポート
  • すべての電話番号フィールドに適用されるデフォルトバリデーション設定をグローバルに構成可能
  • 異なる電話番号フィールドに異なるルールを適用できるフィールドごとのバリデーション設定
  • 特定の国に制限できる国ベースのバリデーション
  • Drupalの制約バリデーションシステムとのシームレスな統合
  • 'tel'要素タイプを使用したカスタムフォーム用のフォーム要素バリデーション
  • 形式に基づいた動的な国選択のためのAjax対応設定フォーム

Use Cases

国際連絡フォーム

E164形式を使用して任意の国からの電話番号を受け付ける連絡フォームを作成します。ユーザーは国コード付きで電話番号を入力する必要があり(例:+1 555 123 4567)、システムは検出された国の実際の電話番号かどうかを自動的にバリデートします。

国別登録フォーム

カナダの顧客のみにサービスを提供するウェブサイトの場合、National形式とカナダのみを有効な国として電話番号バリデーションを設定します。ユーザーは国コードなしで電話番号を入力でき(例:250 763 8884)、無効な番号は拒否されます。

複数地域ビジネスアプリケーション

複数の国(例:米国、カナダ、英国)で事業を展開するビジネスの場合、これら3カ国を選択してE164形式を使用します。システムはこれらの特定の国からの有効な電話番号のみを受け付け、他の地域からの番号を拒否します。

カスタムフォームバリデーション

'tel'要素タイプとvalidateTelコールバックを使用してカスタムフォームに電話番号バリデーションを追加します:'#element_validate' => [['Drupal\telephone_validation\Render\Element\TelephoneValidation', 'validateTel']]。オプションで形式と国制限のために'#element_validate_settings'をカスタマイズできます。

Tips

  • 電話番号から自動的に国を検出できるため、国際アプリケーションにはE164形式を使用してください
  • National形式は、単一の国のユーザーのみにサービスを提供するアプリケーションに最適です
  • 国選択が空の場合はすべての国が有効になります - 真のグローバルアプリケーションに便利です
  • フィールドごとの設定はグローバルデフォルトを上書きし、異なるユースケースに異なるバリデーションルールを適用できます
  • バリデーションサービスはプログラムで使用できます:\Drupal::service('telephone_validation.validator')->isValid($number, $format, $countries)

Technical Details

Admin Pages 1
デフォルト電話番号バリデーション条件 /admin/config/content/telephone_validation

すべての電話番号フォーム要素に適用されるデフォルトのバリデーション設定を構成します。これらの設定はデフォルト値として機能し、フィールドごとに上書きできます。

Hooks 3
hook_element_info_alter

'tel'フォーム要素タイプにデフォルトのバリデーション設定(#element_validate_settings)を追加します。グローバル設定からの形式と国の設定を含みます。

hook_field_info_alter

telephoneフィールドタイプに'Telephone'バリデーション制約を追加し、電話番号フィールド値の自動バリデーションを有効にします。

hook_form_FORM_ID_alter (field_config_edit_form)

電話番号フィールド設定フォームを変更し、サードパーティ設定としてバリデーション設定(有効チェックボックス、形式選択、国選択)を追加します。

Troubleshooting 4
モジュールがインストールできない - 'Composer dependencies'エラー

このモジュールにはgiggsey/libphonenumber-for-phpライブラリが必要です。Composerを使用してモジュールをインストールしてください:'composer require drupal/telephone_validation'。Composerを使用せずにdrupal.orgから手動でモジュールをダウンロードしないでください。

電話番号フィールドでバリデーションが機能しない

特定のフィールドでバリデーションが有効になっていることを確認してください。フィールド設定(フィールドの管理 > フィールドの編集)に移動し、'Telephone validation'設定の'Enabled'チェックボックスをオンにしてください。

有効な電話番号が拒否される

形式設定を確認してください。National形式を使用している場合は、正しい国が選択されていることを確認してください。E164を使用している場合は、電話番号に国コードが含まれていることを確認してください(例:米国/カナダの場合は+1)。

国のドロップダウンが複数選択ではなく単一選択になる

これは予期される動作です。National形式を使用する場合、国番号を含まない国内番号のため、1つの国のみ選択できます。複数の国を許可するにはE164形式に切り替えてください。

Security Notes 3
  • このモジュールはDrupalの公式セキュリティカバレッジを受けており、セキュリティ問題はDrupalセキュリティチームが対応します
  • 電話番号バリデーションは不正な形式のデータの保存を防ぎますが、電話番号の所有権は検証しません
  • セキュリティが重要なアプリケーションでは追加の検証(SMS確認など)を検討してください