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日更新)
Mojoliciousドキュメント日本語訳