ブログトップ 記事一覧 ログイン 無料ブログ開設

サンプルコードによるPerl入門 - 安定と信頼のPerlを学ぶ

2012-01-10

Validator::Customリファレンス - HTMLフォームのバリデーション(値の検証)

 Validator::CustomHTMLフォームのデータのバリデーション(値の検証)を行うための便利なモジュールです。バリデーションのルールを少ない記述で書けること、制約ごとにエラーメッセージを設定できること、良く使う機能は最初から提供していて、ユーザー定義の制約を簡単に追加できる柔軟性の高い設計などが特徴です。

use Validator::Custom;
my $vc = Validator::Custom->new;

# データ
my $data = {
  price => 1200
  name => 'Perl',
  password => 'secret',
  passwrod2 => 'secret'
};

# ルールの作成
my $rule = $vc->create_rule($data, $rule);
$rule->require('price')->check('int')->message('price must be number');

$rule->optional('name')
  ->check('not_blank')->message('name is empty')
  ->check({length => [0, 20])->message('name is too long');

$rule->require('password')
  ->check('not_blank')->message('password is empty')
  ->check('ascii')->message('password contains invalid caharcters');

$rule->require(['password', 'password2'])->name('password_check')
  ->check('duplication')->message('Two password not match')
  ->copy(0);

# バリデーション
my $vresult = $vc->validate($data, $rule);

# 結果の確認
if ($vresult->is_ok) {
  # 安全なデータ
  my $safe_data = $vresult->data;
}
else {
  # エラーメッセージ
  my $errors = $vresult->messages;
}

 ルール作成の古い文法はこちら。上記の新しい文法で書くのが推奨です。

# ルールの作成(古い文法)
my $rule = [
  price => [
    [int => 'price must be number']
  ],
  name => [
    [not_blank => 'name is empty'],
    [{length => [0, 20]} => 'name is too long']
  ],
  password => [
    [not_blank => 'password is empty'],
    [ascii => 'password contains invalid caharcters']
  ],
  {password_check => ['password', 'password2']}
    => {copy => 0}
    => [
      [duplication => 'Two password not match']
    ]
];

 こちらのドキュメントは、新しい文法に書き直しますので、古い文法については、公式のドキュメントを参考にしてください。

インストール

データのバリデーション

ルールの書き方

制約関数

フィルタ関数

ルールのオプション

よくある質問(FAQ)


目次へ

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/perlcodesample/20120110/1326191080
リンク元