Могу ли я перейти к действию в том же контроллере в Mojolicious - PullRequest
0 голосов
/ 04 февраля 2019

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

 get '/foo/bar' => { controller => 'Foo', action => 'bar' };

, могу ли я сделать то же самое, если мое действие находится в том же файле Mojolicious :: Lite?

Пока ясделайте

sub foobar {
    my $c = shift;
    ...
}

get '/' => sub { foobar(@_) };

, но я бы хотел сделать

get '/' => { action => 'foobar' };

для согласованности и простоты разбиения позже, если я решу это сделать, сохраняя общую структуру Mojolicious :: Lite (т.е.: один файл).

Как это можно сделать?

1 Ответ

0 голосов
/ 05 февраля 2019

Хотя Mojolicious :: Lite - очень простая оболочка, любые подпрограммы, определенные в скрипте Lite, будут не методами контроллера, а методами приложения.На самом деле нет способа сделать их методами контроллера, кроме как с помощью определения контроллера, что вполне возможно даже в облегченном приложении ( очень простая оболочка), но сделало бы его не таким легким.Другое направление легко возможно, хотя;Вы можете иметь анонимные подпрограммы как действия в полном приложении.Вы также можете написать свои действия в качестве помощников, которые затем могут быть вызваны просто из анонимной подпрограммы или действия контроллера.Любой из них, вероятно, не будет хорошей организацией кода для полного приложения.

В любом случае главное, что содержимое сценария Mojolicious :: Lite эквивалентно подпрограмме startup полного приложения, а не контроллер.

...