我正在将参数传递给redirect_to之类的
$c->redirect_to('named', foo => 'bar');
Run Code Online (Sandbox Code Playgroud)
要么
$c->redirect_to('named, query => {foo=> 'bar'});
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在目标控制器中使用它或检索foo的值.
tem*_*ire 12
$self->redirect_to('named', foo => 'bar'),如果没有前面的斜杠,则使用命名路由,并将参数放入路径占位符.
默认情况下,您在应用程序中定义的每个路径都会分配一个路径名称,或者您可以手动分配它们.(您还可以获取已分配路线的列表./myapp routes)
在精简版应用中:
action # route name
get '/named' => sub { ... }; # named
get '/named/:foo' => sub { ... }; # namedfoo
get '/named/:foo' => sub { ... } => 'something-else'; # something-else
以下重定向到get '/named/:foo'操作:
$self->redirect_to('namedfoo', foo => 'bar')
Run Code Online (Sandbox Code Playgroud)
这实际上与:
$self->redirect_to('/named/bar');
Run Code Online (Sandbox Code Playgroud)
您可以使用 - > param访问操作中的占位符值:
get '/named/:foo' => sub {
my $self = shift;
$self->render_text($self->param('foo'));
};
Run Code Online (Sandbox Code Playgroud)
其中呈现以下HTML:
bar
您可能还想查看:http: //mojocasts.com/e2#Generic%20Placeholders
非常详细的解释如何传递和获取param
$self 是一个有趣的控制器。在每种情况下,我们都调用 $obj->param 来获取名称列表,调用 $obj->param("arg") 来获取值(或值列表):
$self->param -- params from route, post and get
$self->req->param -- params from post and get
$self->req->query_params -- params from get
$self->req->body_params -- params from post
Run Code Online (Sandbox Code Playgroud)