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::MatchはMojolicious::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);
スタック(c0。
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::MatchはMojo::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日更新)
Mojoliciousドキュメント日本語訳