从 Mojolicious 控制器内省占位符变量的名称

use*_*475 5 parameters perl routes mojolicious

我有一个 Mojolicious 控制器,可以响应不同的 URL 路由而触发。例如,给定 URL 路径:

/v1/users/:someid
Run Code Online (Sandbox Code Playgroud)

和一个触发的控制器:

sub handle_request ($self) {
     my $place_holder_name = $self->route->??????   # how can I get 'someid'?
     is($place_holder_name, 'someid', 'can access the placeholder name');
}
Run Code Online (Sandbox Code Playgroud)

如何找到占位符的名称?

Eva*_*oll 4

参数

这些目前没有记录在 下Mojolicious::Routes,所以我明白为什么这很令人困惑。它们记录在Mojolicious::Controller#param,

你有一个 Route 参数,所以你可以用以下方法检索该值:

$c->param('someid');
Run Code Online (Sandbox Code Playgroud)

获取提供给控制器的所有参数

虽然未记录,但您可以在内部哈希引用中找到捕获的名称,如下所示,

$c->param('someid');
Run Code Online (Sandbox Code Playgroud)

像这样;

$self->stash->{'mojo.captures'};
Run Code Online (Sandbox Code Playgroud)