Sledge::Plugin::Validator::range

2007年5 月13日  |  Written by matsumoto  |  under Perl Yahoo!ブックマークに登録    はてなブックマーク - Sledge::Plugin::Validator::range

大変役に立つ Sledge::Plugin::Validator ですが、

例えば数値などの入力で良くあるケースが

 ・都道府県(1~47とか)をプルダウンで入力させたい
 ・ラジオボタンなどで value が 0、1、2 のいずれかを選択させたい

などだと思います。

S::P::Validatorでマッチするようなのが見つけられなかったので
追加してみました、こんな感じですかね。

Sledge::Plugin::Validator::range

package Sledge::Plugin::Validator::range;

use strict;
use vars qw($VERSION);
$VERSION = '0.01';

sub load {
my $self = shift;
$self->set_function(
RANGE => &is_RANGE,
);
}

sub is_RANGE {
my $value = shift;
my $min = shift;
my $max = shift || $min;
if($value >= $min && $value <= $max) { return 1; }
return 0;
}

1;

で、Validator でこれを利用できるようにしておいて(Sledge/Plugin/Validator.pm の40行目辺り)

# チェック定義
#
$self->{valid} = Sledge::Plugin::Validator->new(
#LOAD_FUNCTION => [qw(default japanese)],
LOAD_FUNCTION => [qw(default japanese range)],
MESSAGE_FILE => eval {$self->create_config->validator_message_file},
);

で、Pagesクラスで以下のような書き方で。

sub valid_index {
my $self = shift;
$self->valid->check(
'pref_id' => [qw(NOT_NULL UINT), ['RANGE',1,47], ],
);

現在コメントはありません | コメントの投稿はこちら

コメントを書き込む

コメント本文

※コメントのフォーム内で以下のタグがご利用いただけます
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

私はチーム・マイナス6%です