Как передать запрос Catalyst в CGI::Application?
У меня есть CGI::Application
петля как
while (my $q = new CGI::Fast){
S::W::Dispatch->dispatch(args_to_new => { QUERY => $q });
my $webapp = S::W::instance();
undef $CGI::Application::INSTANCE;
S::W::instance(undef);
S::clear_instance();
}
И, короче говоря, я хотел бы сделать это новой отправкой Catalyst..
Поэтому я хочу сделать что-то вроде этого
sub oldRoot :Local {
...
S::W::Dispatch->dispatch(args_to_new => { QUERY => $q });
}
Поэтому мне нужно знать, как восстановить $q
в катализаторе. Это легко сделать? Или как мне добиться этого проще?
1 ответ
Решение
На самом деле это было намного проще, чем я ожидал.
Просто сделайте ваш контроллер расширенным Catalyst::Controller::WrapCGI
, скорее, чем Catalyst::Controller
BEGIN { extends 'Catalyst::Controller::WrapCGI' }
Затем оберните все это так...
$self->cgi_to_response($c, sub {
my $q = new CGI::Fast;
S::W::Dispatch->dispatch(args_to_new => { QUERY => $q });
my $webapp = S::W::instance();
undef $CGI::Application::INSTANCE;
S::W::instance(undef);
S::clear_instance();
} );
Это просто сработало..