7

我将参数传递给 redirect_to 喜欢

$c->redirect_to('named', foo => 'bar');

或者

$c->redirect_to('named, query => {foo=> 'bar'});

但我不确定如何使用它或在目标控制器中检索 foo 的值。

4

2 回答 2

13

$self->redirect_to('named', foo => 'bar'),不使用前面的斜杠,指的是命名路由,参数放置在路由占位符中。

默认情况下,您在应用程序中定义的每个路由都会被分配一个路由名称,或者您可以手动分配它们。(您还可以使用 获取已分配路线的列表./myapp routes

在精简版应用程序中:

action # 路由名称

得到'/命名' => sub { ... }; # 命名
得到'/named/:foo' => sub { ... }; # 命名为foo
get '/named/:foo' => sub { ... } => 'something-else'; # 别的东西

以下重定向到get '/named/:foo'操作:

$self->redirect_to('namedfoo', foo => 'bar') 

这实际上与以下内容相同:

$self->redirect_to('/named/bar');

您可以使用 ->param 访问操作中的占位符值:

get '/named/:foo' => sub {
  my $self = shift;
  $self->render_text($self->param('foo'));
};

呈现以下 HTML:

bar


您可能还想查看: http: //mojocasts.com/e2#Generic%20Placeholders

于 2012-03-08T19:01:35.847 回答
4

非常详细的解释如何通过和获取param

$self 是一个 mojolicious 控制器。在每种情况下,我们调用 $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
于 2016-12-01T10:41:06.030 回答