在mojolicious中将参数传递给redirect_to并在目标控制器中使用它们

时间:2012-03-08 17:44:14

标签: perl mojolicious

我将参数传递给redirect_to,如

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

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

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

2 个答案:

答案 0 :(得分:11)

没有前面斜杠的

$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') 

实际上与以下内容相同:

$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

答案 1 :(得分:3)

Very verbose explanation如何传递并获取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