Tripletail::Validator - 値の検証の一括処理

# NAME

Tripletail::Validator - 値の検証の一括処理

# SYNOPSIS

      my $validator = $TL->newValidator;
      $validator->addFilter(
        {
          name  => 'NotBlank',
          email => 'Email',
          optionemail => 'Blank;Email',  # 入力しなくてもOKとする
          password => 'CharLen(4,8);Password',
        }
      );
      my $error = $validator->check($form);

# DESCRIPTION

Formオブジェクト値の検証の一括処理を行う。

# METHODS

$TL->newValidator

        $validator = $TL->newValidator

  Tripletail::Validator オブジェクトを作成。

addFilter

        $validator->addFilter(
          {
            name  => 'NotBlank',
            email => 'Email',
            optionemail => 'Empty;Email',  # 入力しなくてもOKとする
            password => 'CharLen(4,8);Password',
          }
        )

  バリデータにフィルタを設定する。 検証対象となるフォームのキーに対し、フィルタリストを指定する。

  フィルタ指定形式としては、

        FilterName(args)[message]

  を、「;」区切りとする。 「(args)」や、「[message]」は省略可能。 「(args)」を省略した場合は、それぞれのフィルタによりデフォルトのチェックを行う。 「[message]」を省略した場合は、checkの戻り時にフィルタ名を返す。

check

        $error = $validator->check($form)
        $error = $validator->check($form, sub{...} )

  設定したフィルタを利用して、フォームの値を検証する。

  それぞれのフォームのキーに対してエラーがあれば、「[message]」、 もしくは指定がない場合はフィルタ名を値としたハッシュリファレンスを返す。 エラーがなければ、そのキーは含まれない。

  ２番目の引数に関数リファレンスを渡すと, エラー時にそれが呼ばれる。 エラーがなかった場合には呼ばれない。 引数として、１つめに check メソッドが返すのと同じハッシュを、 ２つめに文字列でのエラーメッセージを渡す。

  変更用フィルタを使用しようとした場合はエラーを返す。

correct

        $error = $validator->correct($form)
        $error = $validator->correct($form, sub{...} )

  設定したフィルタを利用して、フォームの値を検証する。 また、変更用フィルタを使った場合はフォームの値を修正する。

  それぞれのフォームのキーに対してエラーがあれば、「[message]」、 もしくは指定がない場合はフィルタ名を値としたハッシュリファレンスを返す。 エラーがなければ、そのキーは含まれない。

  ２番目の引数に関数リファレンスを渡すと, エラー時にそれが呼ばれる。 エラーがなかった場合には呼ばれない。 引数として、１つめに check メソッドが返すのと同じハッシュを、 ２つめに文字列でのエラーメッセージを渡す。

  $form に const メソッドが呼ばれた Form オブジェクトが渡された場合、 エラーを返す。

getKeys

        @keys = $validator->getKeys

  現在設定されているフィルタのキー一覧を返す。

## フィルタ一覧

### 組み込みcheckフィルタ

Empty

  値が空（存在しないか0文字）であることをチェックし、そうであれば以降の判定を中止し、検証OKとする。

  Email等の形式である必要があるが、入力が任意であるような項目のチェックに使用する。

NotEmpty

  値が空（存在しないか0文字）でないことをチェックする。

  値の形式を問わないが、入力必須としたい場合に使用する。

NotWhitespace

  半角/全角スペース、タブのみでないことをチェックする。 値が空（存在しないか0文字）の場合は検証NGとなる。

Blank

  値が空（存在しないか0文字）、半角/全角スペース、タブのみであることをチェックし、そうであれば以降の判定を中止し、検証OKとする。

  Email等の形式である必要があるが、入力が任意であるような項目のチェックに使用する。空白のみなら入力無しとみなす。

NotBlank

  値が空（存在しないか0文字）、半角/全角スペース、タブのみでないことをチェックする。

  値の形式を問わないが、入力必須としたい場合に使用する。空白のみなら入力無しとみなす。

PrintableAscii

  文字列が制御コードを除くASCII文字のみで構成されているかチェックする。 値が空（存在しないか0文字）なら検証NGとなる。

Wide

  文字列が全角文字のみで構成されているかチェックする。 値が空（存在しないか0文字）なら検証NGとなる。

Password($spec)

  文字列が$specに指定した要素をすべて最低1つずつ含んでいるかチェックする。

  $specに指定できるのは`alpha`, `ALPHA`, `digit`, `symbol`をカンマ区切りで指定した文字列で、 指定がない場合はすべて指定した場合と同様となる。 また、指定された文字以外が入っていることに関しては考慮しない。

  値が空（存在しないか0文字）なら検証NGとなる。

  "isPassword" in Tripletail::Value

ZipCode

  7桁の郵便番号（XXX-XXXX形式）かチェックする。

  実在する郵便番号かどうかは確認しない。

TelNumber

  電話番号（/^\d[\d-]+\d$/）かチェックする。

  数字で始まり、数字で終わり、その間が数字とハイフン(-)のみで構成されていれば電話番号とみなす。

Email

  メールアドレスとして正しい形式かチェックする。

MobileEmail

  メールアドレスとして正しい形式かチェックする。

  但し携帯電話のメールアドレスでは、アカウント名の末尾にピリオドを含んでいる場合がある為、これも正しい形式であるとみなす。

  携帯電話キャリアのドメイン名を判別するわけではないため、通常のメールアドレスも正しい形式であるとみなす。

Integer($min,$max)

  整数で、かつ$min以上$max以下かチェックする。指定値は省略可能。

  デフォルトでは、最大最小のチェックは行わなず整数であれば正しい形式であるとみなす。

  値が空（存在しないか0文字）なら検証NGとなる。

Real($min,$max)

  整数もしくは小数で、かつ$min以上$max以下かチェックする。指定値は省略可能。

  デフォルトでは、最大最小のチェックは行わなず、整数もしくは小数であれば正しい形式であるとみなす。

  値が空（存在しないか0文字）なら検証NGとなる。

Hira

  平仮名だけが含まれているかチェックする。

  値が空（存在しないか0文字）なら検証NGとなる。

Kata

  片仮名だけが含まれているかチェックする。

  値が空（存在しないか0文字）なら検証NGとなる。

ExistentDay

  YYYY-MM-DDで設定された日付が実在するかチェックする。

Gif
Jpeg
Png

  それぞれの形式の画像かチェックする。

  画像として厳密に正しい形式であるかどうかは確認しない。

HttpUrl($mode)

  "http://" で始まる文字列かチェックする。

  $modeにs を指定した場合、"https://" で始まる文字列も正しい形式とみなす。

HttpsUrl

  "https://" で始まる文字列かチェックする。

Len($min,$max)

  バイト数の範囲が指定値以内かチェックする。 指定がない場合はチェックを行わない。

SjisLen($min,$max)

  Shift-Jisでのバイト数の範囲が指定値以内かチェックする。指定がない場合はチェックを行わない。

CharLen($min,$max)

  文字数の範囲が指定値以内かチェックする。 指定値がない場合はチェックを行わない。

Portable

  機種依存文字を含んでいないかチェックする。

  値が空（存在しないか0文字）なら検証OKとなる。

PcPortable

  携帯絵文字を含んでいないかチェックする。

  値が空（存在しないか0文字）なら検証OKとなる。

DomainName

  ドメイン名として正当である事を確認する。

IpAddress

        IpAddress($checkmask)

  $checkmaskに対して、設定されたIPアドレスが一致すれば1。そうでなければundef。

  $checkmaskは空白で区切って複数個指定する事が可能。

  例：'10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 127.0.0.1 fe80::/10 ::1'。

Enum($a,$b,$c)

  値が指定値のいずれかであることをチェックする。指定値がない場合にはいずれにも該当しないとみなす。

Or($filter1|$filter2|$filter3)

  指定のフィルタのいずれかに該当するかをチェックする。指定値がない場合にはいずれにも該当しないとみなす。

RegExp($regexp)

  指定の正規表現に該当するかをチェックする。指定値がない場合には、エラー。

SingleValue

  値がただ1つ存在することをチェックする拒否フィルタ。 (0.44 以降)

  1つのみ存在すれば、次のフィルタに処理を渡す。

  2つ以上存在する、若しくは1つも存在しない場合には、 その時点で処理を中断し、エラーを返す。

MultiValues

        MultiValues($min)
        MultiValues($min,$max)

  値が指定した `$min` 個以上, `$max` 個以下の範囲で 存在することをチェックする拒否フィルタ。 (0.44 以降)

  個数が範囲内であれば、 次のフィルタに処理を渡す。

  個数が範囲外だった場合には、 その時点で処理を中断し、エラーを返す。

  `$max` を省略した場合、上限個数の確認は行わない。

  値が0個で、それが範囲内のときのみ(`$min` が 0 の場合)、その場で受理される. (0.45以降)

NoValues

  値が存在しないことを受け付ける受理フィルタ。 (0.44 以降)

  値を全く持っていなければ、 その時点で処理を中断し、成功を返す。

  何らかの値が(空欄であったとしても)存在した場合には、 次のフィルタに処理を渡す。

### 組み込みcorrectフィルタ

"correct" で使用できる変更用フィルタ。 "correct" では check フィルタと correct フィルタの 両方を利用できるが、"check" で correct フィルタを使用した場合には エラーとなる。

ConvHira

  ひらがなに変換する。 "convHira" in Tripletail::Value。

ConvKata

  カタカナに変換する。 "convKata" in Tripletail::Value。

ConvNumber

  半角数字に変換する。 "convNumber" in Tripletail::Value。

ConvNarrow

  全角文字を半角に変換する。 "convNarrow" in Tripletail::Value。

ConvWide

  半角文字を全角に変換する。 "convWide" in Tripletail::Value。

ConvKanaNarrow

  全角カタカナを半角に変換する。 "convKanaNarrow" in Tripletail::Value。

ConvKanaWide

  半角カタカナを全角に変換する。 "convKanaWide" in Tripletail::Value。

ConvComma

  半角数字を3桁区切りのカンマ表記に変換する。 "convComma" in Tripletail::Value。

ConvLF

  改行コードを LF (\n) に変換する。 "convLF" in Tripletail::Value。

ConvBR

  改行コードを <BR>\n に変換する。 "convBR" in Tripletail::Value。

ForceHira

  ひらがな以外の文字は削除。 "forceHira" in Tripletail::Value。

ForceKata

  カタカナ以外の文字は削除。 "forceKata" in Tripletail::Value。

ForceNumber

  半角数字以外の文字は削除。 "forceNumber" in Tripletail::Value。

ForceMin($max,$val)

  半角数字以外の文字を削除し、min未満なら$valをセットする。$val省略時はundefをセットする。 "forceMin($max,$val)" in Tripletail::Value。

ForceMax($max,$val)

  半角数字以外の文字を削除し、maxより大きければ$valをセットする。$val省略時はundefをセットする。 "forceMax($max,$val)" in Tripletail::Value。

ForceMaxLen($max)

  最大バイト数を指定。超える場合はそのバイト数までカットする。 "forceMaxLen($max)" in Tripletail::Value。

ForceMaxUtf8Len($max)

  UTF-8での最大バイト数を指定。 超える場合はそのバイト数以下まで UTF-8の文字単位でカットする。 "forceMaxUtf8Len($max)" in Tripletail::Value。

ForceMaxSjisLen($max)

  SJISでの最大バイト数を指定。超える場合はそのバイト数以下まで SJISの文字単位でカットする。 "forceMaxSjisLen($max)" in Tripletail::Value。

ForceMaxCharLen($max)

  最大文字数を指定。超える場合はその文字数以下までカットする。 "forceMaxCharLen($max)" in Tripletail::Value。

ForcePortable

  機種依存文字以外を削除。

ForcePcPortable

  携帯絵文字以外を削除。

TrimWhitespace

  値の前後に付いている半角/全角スペース、タブを削除する。 "trimWhitespace" in Tripletail::Value。

### ユーザー定義フィルタについて

組み込みフィルタに含まれないフィルタを、ユーザーで実装し、組み込むことができる。

#### フィルタの構築

Tripletail::Validator::Filterクラスを継承し、doFilterメソッドをオーバーライドする。

doFilterメソッドに渡される引数は、以下の通り。

$this

  フィルタオブジェクト自身

$values

  チェック対象となる値の配列の参照。

$args

  フィルタに与えられる引数。

doFilterメソッドの戻り値をスカラで評価し、その復帰値が真で且つ リファレンスでなければ検証NGと判断する。 偽であれば、そのフィルタは通過して次のフィルタに。 リファレンスであればそのキーは検証OKとして、そのキーの検証を終了する。

#### フィルタの組み込み

IniパラメータのValidatorグループに、

      フィルタ名 = フィルタクラス名

として指定する。

#### 例

チェック対象となる値の配列に、'Test'以外の文字列が含まれていればエラー。

TestFilter.pm

        package TestFilter;
        use Tripletail;

        use base qw{Tripletail::Validator::Filter};

        sub doFilter {
          my $this   = shift;
          my $values = shift;
          my $args   = shift;

          return grep { $_ ne 'Test' } @$values > 0;
        }

Iniファイル

        [Validator]
        Test = TestFilter

使い方

        $validator->addFilter(
          {
            test => 'Test',
          }
        )

# SEE ALSO

Tripletail
Tripletail::Value

# AUTHOR INFORMATION

Copyright 2006 YMIRLINK Inc.

This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself

このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。

Address bug reports and comments to: tl@tripletail.jp

HP : http://tripletail.jp/

Tripletail::Validator - 値の検証の一括処理

# INDEX

- $TL->newValidator
- $args
- $this
- $values
- AUTHOR INFORMATION
- Blank
- CharLen($min,$max)
- ConvBR
- ConvComma
- ConvHira
- ConvKanaNarrow
- ConvKanaWide
- ConvKata
- ConvLF
- ConvNarrow
- ConvNumber
- ConvWide
- DESCRIPTION
- DomainName
- Email
- Empty
- Enum($a,$b,$c)
- ExistentDay
- ForceHira
- ForceKata
- ForceMax($max,$val)
- ForceMaxCharLen($max)
- ForceMaxLen($max)
- ForceMaxSjisLen($max)
- ForceMaxUtf8Len($max)
- ForceMin($max,$val)
- ForceNumber
- ForcePcPortable
- ForcePortable
- Gif
- Hira
- HttpUrl($mode)
- HttpsUrl
- Iniファイル
- Integer($min,$max)
- IpAddress
- Jpeg
- Kata
- Len($min,$max)
- METHODS
- MobileEmail
- MultiValues
- NAME
- NoValues
- NotBlank
- NotEmpty
- NotWhitespace
- Or($filter1|$filter2|$filter3)
- Password($spec)
- PcPortable
- Png
- Portable
- PrintableAscii
- Real($min,$max)
- RegExp($regexp)
- SEE ALSO
- SYNOPSIS
- SingleValue
- SjisLen($min,$max)
- TelNumber
- TestFilter.pm
- TrimWhitespace
- Tripletail
- Tripletail::Value
- Wide
- ZipCode
- addFilter
- check
- correct
- getKeys
- フィルタの構築
- フィルタの組み込み
- フィルタ一覧
- ユーザー定義フィルタについて
- 使い方
- 例
- 組み込みcheckフィルタ
- 組み込みcorrectフィルタ

Tripletail::Validator - 値の検証の一括処理