我将参数传递给redirect_to,如
$c->redirect_to('named', foo => 'bar');
或
$c->redirect_to('named, query => {foo=> 'bar'});
但我不知道如何使用它或在目标控制器中检索foo的值。
答案 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
答案 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