名前

Mojolicious::Routes::Match - ルーティングを見つける

使い方

use Mojolicious::Controller;
use Mojolicious::Routes;
use Mojolicious::Routes::Match;

# ルーティング
my $r = Mojolicious::Routes->new;
$r->get('/:controller/:action');
$r->put('/:controller/:action');

# マッチ
my $c = Mojolicious::Controller->new;
my $match = Mojolicious::Routes::Match->new(root => $r);
$match->match($c => {method => 'PUT', path => '/foo/bar'});
say $match->stack->[0]{controller};
say $match->stack->[0]{action};

# 描画
say $match->path_for->{path};
say $match->path_for(action => 'baz')->{path};

説明

Mojolicious::Routes::MatchMojolicious::Routes構造 のためのビジターです。

属性

Mojolicious::Routes::Matchは次の属性を実装しています。

endpoint

my $endpoint = $m->endpoint;
$m           = $m->endpoint(Mojolicious::Routes->new);

実際にマッチされたルーティングの終点。通常はMojolicious::Routes::Routeオブジェクト。

position

my $current = $match->position;
$match      = $match->position(2);

スタック(c)上の現在のポジション, デフォルトは0

root

my $root = $m->root;
$m       = $m->root($routes);

ルーティングのツリーの根。通常はMojolicious::Routes::Routeオブジェクト。

stack

my $stack = $m->stack;
$match    = $match->stack([{action => 'foo'}, {action => 'bar'}]);

ネストしているヒストリーと一緒にキャプチャされたパラメータ。

適切なendpointを探すためにコントローラーとrootに対するオプションにマッチします。

メソッド

Mojolicious::Routes::MatchMojo::Baseから すべてのメソッドを実装しており、 次のメソッドを実装しています。

find

$match->find(Mojolicious::Controller->new, {method => 'GET', path => '/'});

ルーティングの木にマッチします。

path_for

my $info = $match->path_for;
my $info = $match->path_for(foo => 'bar');
my $info = $match->path_for({foo => 'bar'});
my $info = $match->path_for('named');
my $info = $match->path_for('named', foo => 'bar');
my $info = $match->path_for('named', {foo => 'bar'});

パラメーター付きのマッチしたルーティングパスに描画します。

参考

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

(Mojolicious 8.12を反映。2019年6月13日更新)