Передача аргументов в redirect_to в mojolicious и использование их в целевом контроллере - PullRequest
6 голосов
/ 08 марта 2012

Я передаю аргументы в redirect_to как

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

или

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

но я не уверен, как его использовать или получить значение foo в целевом контроллере.

Ответы [ 2 ]

11 голосов
/ 08 марта 2012

$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

3 голосов
/ 01 декабря 2016

Очень подробное объяснение как пройти и получить 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
...