Как передать запрос 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();                                           
} );

Это просто сработало..

Другие вопросы по тегам