Как делегировать вызывающий параметр ($ self) другому методу - PullRequest
3 голосов
/ 15 июня 2011

Я изучаю mojolicious :: lite.

В маршрутизаторе делегируйте параметр контроллеру, используйте этот код ok:

get '/hello/:name' => sub {
  my $self = shift;
  ControllerTest::hello($self);
  };

Если есть какой-либо метод сокращения, например:

get '/hello/:name' => ControllerTest::hello( shift ); #this code not work

спасибо.

Ответы [ 2 ]

5 голосов
/ 15 июня 2011

Отказ от ответственности: я не хищный хакер:)

Это не сработает, так как 'shift' извлекает данные из текущего контекста (из @_). Я бы предположил, что самая короткая (короткая рука) будет:

get '/hello/:name' => sub { ControllerTest::hello( shift ); };

или, может быть, с помощью дополнительной ссылки:

get '/hello/:name' => \&ControllerTest::hello

Тогда первым аргументом, передаваемым в hello, будут все аргументы, передаваемые анонимному подпрограмме. Я не пробовал это, но я подозреваю, что это будет работать:)

1 голос
/ 15 июня 2011

Я думаю, вы должны вызывать его как метод напрямую, используя полное имя, например

get '/hello/:name' => sub { $self->ControllerTest::hello(); };
...