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], ],
);








