アイキャッチ画像: デスクの上でパソコンを使用している

こんにちは。最近Googleの某ゲームにはまり過ぎて寝る間も惜しんで遊んでいる大野です。

コンテンツの作成者が複数いるサイトでは、コンテンツ作成時にユーザーからの入力を制御したいと言うシチュエーションがあるかと思います。今回はそんな時に役に立つ Field validation モジュールをご紹介します。

概要

Drupal のコアに入っているフィールドモジュールでは必須項目であるかなどの最小限の検証しかできませんが、この Field validation モジュールを使えば様々な条件でユーザーからの入力を検証することができます。

モジュールの紹介ページに書かれている機能の内容を一部抜粋して以下に日本語訳してみました。多種多様なバリデーターが用意されています。

設定できる内容

The following validators are currently included (7.x-2.x): バージョン7.x-2.xでは以下の内容が設定できるようです。オフィシャルドキュメントより抜粋。

  • 正規表現
  • 数値 (オプション設定: 最低値 / 最高値)
  • 文字の長さ (オプション設定: 最短 / 最長)
  • プレーンテキストであるか (タグの不許可)
  • 空であるか (スパム対策: CSSで非表示)
  • ブラックリスト ワード
  • 選択項目の数 (オプション設定: 最小 / 最大選択)
  • 一意性
  • フィールドの比較 (グループ化された他のフィールドとの比較)
  • プロパティの比較 (グループ化された他のプロパティとの比較)
  • 特定の値
  • 複数のフィールドから一つ以上の選択
  • 複数のフィールドが同一であるか (?)
  • 複数のフィールドで一意であるか
  • PHPコード (強力かつ危険)
  • URL (内部パスと外部パスの検証をサポート)
  • Eメール
  • パターン (簡易版正規表現)
  • 日付の範囲

以下のバリデーターはサブモジュールの Field validation extras を有効にすると使用できます。

  • 色 (HTML5)
  • 日付 (ISO)
  • EANコード
  • Field collection の一意性
  • 正数
  • IPアドレス
  • 数字 (HTML5, 最小値、最高値、ステップ数)
  • 正規表現 (Perl互換)
  • 電話番号
  • 必須フィールド
  • 複数のフィールドからいくつgの必須
  • 郵便番号(Postal Code Validationモジュールに依存, 住所フィールドをサポート)

モジュールのインストール方法

Drush

Drushが使える環境であれば以下のコマンドでインストールすることができます。

drush en field_validation

モジュールの管理画面からインストールする方法

  1. Field validation モジュールのページからファイルをダウンロードし解凍してください。
  2. sites/all/modules に解凍した field_validation フォルダを配置します。
  3. モジュールの管理ページ(admin/modules)に移動し、Field validation モジュールと Field validation UI モジュールを有効にします。

設定

勘違いしやすいポイントなのですが、このモジュールはバリデーターをフィールド毎に設定するのではなく、エンティティのバンドルごとに設定します。ノードで例えると、ノードのコンテンツタイプごとにバリデーターを切り分けることができるので、より柔軟にバリデーターを構築することができます。

管理画面から サイト構築 > Field Validation へアクセスします。

設定の一覧画面

バリデーターの一覧画面が見えていると「追加」のリンクを押します。

設定例

今回は例として、ノードのコンテンツタイプ article にある test フィールドに入力された値が Google Plus のURLであるかチェックするバリデーターを作成してみます。

特定のURLになりますので、今回は正規表現を使用するバリデーターとしました。設定内容は以下の画像を参考にしてください。

Google PlusのURLであるか検証する例

いかがでしたでしょうか。私はこのモジュールを利用してSNSサイトを構築したことがあるのですが、あっという間に設定できて、とても楽にサイトを構築することができました。

セキュリティリスクはありますがPHPコードも使用する事ができるので、ほぼどんな条件でも検証可能な強力なモジュールです。皆様も是非ご活用ください。