NAME
Mojolicious::Validator::Validation - 検証の実行
使い方
use Mojolicious::Validator; use Mojolicious::Validator::Validation; my $validator = Mojolicious::Validator->new; my $v = Mojolicious::Validator::Validation->new(validator => $validator); $v->input({foo => 'bar'}); $v->required('foo')->in('bar', 'baz'); say $v->param('foo');
説明
Mojolicious::Validator::ValidationはMojolicious::Validatorによる検証チェック を実行します。
属性
Mojolicious::Validator::Validationは次の属性を実装しています。
csrf_token
my $token = $v->csrf_token; $v = $v->csrf_token('fa6a08...');
CSRFトークン.
input
my $input = $v->input; $v = $v->input({foo => 'bar', baz => [123, 'yada']});
検証されるデータ
output
my $output = $v->output; $v = $v->output({});
検証されたデータ。
topic
my $topic = $v->topic; $v = $v->topic('foo');
現在検証されているフィールドの名前
validator
my $validator = $v->validator; $v = $v->validator(Mojolicious::Validator->new);
この検証が属するMojolicious::Validatorオブジェクト
メソッド
Mojolicious::Validator::ValidationはMojo::Baseから すべてのメソッドを継承しており、次の新しいメソッドを実装しています。
check
$v = $v->check('size', 2, 7);
現在のトピック(topic
)のすべての値に対して、検証チェックを実行します。 最初のひとつが失敗すれば、残りの検証は行われません。
csrf_protect
$v = $v->csrf_protect;
csrf_token
を検証し、クロスサイトリクエストフォージェリーから保護します。
error
my $err = $v->error('foo'); $v = $v->error(foo => ['custom_check']); $v = $v->error(foo => [$check, $result, @args]);
失敗した検証のために詳細を設定します。 フィールドあたりひとつだけ設定できます。
# 失敗したバリデーションについての詳細 my ($check, $result, @args) = @{$v->error('foo')}; # チェックを実行することなしに、フィールドのバリデーションの失敗を強制する $v->error(foo => ['some_made_up_check_name']);
every_param
my $values = $v->every_param('foo');
param
と似ていますが、同じ名前で共有されるすべての値を 配列のリファレンスとして、返却します。
# 最初の値を取得 my $first = $v->every_param('foo')->[0];
failed
my $names = $v->failed;
失敗したバリデーションのすべてのパラメーター名をリストで返却します。
# 失敗したすべてのパラメーター名 say for @{$v->failed};
has_data
my $bool = $v->has_data;
input
が検証のために利用できるデータを持っているかチェックします。
has_error
my $bool = $v->has_error; my $bool = $v->has_error('foo');
検証結果にエラーがあるかをチェックします。 デフォルトですべてのフィールドをチェックします。
is_valid
my $bool = $v->is_valid; my $bool = $v->is_valid('foo');
検証が成功し、フィールドが値を持っているかをチェックします。 デフォルトで現在のtopic
をチェックします。
optional
$v = $v->optional('foo'); $v = $v->optional('foo', 'filter1', 'filter2');
検証トピック(topic
)を変更し、フィルタを適用します。Mojolicious::Validatorのフィルタのすべてのフィルタがサポートされています。
param
my $value = $v->param; my $value = $v->param('foo');
検証パラメーターにアクセスします。 同じ名前で共有される複数の値があり、 ひとつ以上の値にアクセスしたい場合は、 every_param
を使用することができます。
# すぐに値を取得 my $user = $v->optional('user')->size(1, 15)->param;
passed
my $names = $v->passed;
成功したバリデーションのすべてのパラメーター名をリストで返却します。
# 成功したすべてのパラメーターの名前 say for @{$v->passed};
required
$v = $v->required('foo'); $v = $v->required('foo', 'filter1', 'filter2');
検証のトピック(topic
)を変更し、フィルタを適用し、値が存在する、空の文字列ではないことを確実にします。 Mojolicious::Validatorのフィルタのすべてのフィルタがサポートされています。
チェック
属性とメソッドに加えて、validator
で提供されるMojolicious::Validator::Validation上のすべてのチェックを利用できます。check
に似ています。
# バリデーションチェックを呼ぶ $v->required('foo')->size(2, 5)->like(qr/^[A-Z]/); $v->optional('bar')->equal_to('foo'); $v->optional('baz')->in(qw(test 123)); # 長いバージョン $v->required('foo')->check('size', 2,5)->check('like', qr/^[A-Z]/);
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年6月14日更新)