perl - 如何将 Catalyst 请求移交给 CGI::Application?

标签 perl 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 });
}

所以我需要知道如何在 Catalyst 中重建 $q。这很容易做到吗?或者,我怎样才能更轻松地实现这一目标?

最佳答案

这实际上比我预期的要容易得多。

只需让您的 Controller 扩展 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();                                           
} );

刚刚成功了..

关于perl - 如何将 Catalyst 请求移交给 CGI::Application?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31984389/

相关文章:

c# - 简化正则表达式或模式

perl - 如何拆分三个不同的分隔符然后 ucfirst 每个结果[]?

apache - 如何防止跨站请求伪造攻击?

perl - 如何使用 CGI::Application 获取上传文件的内容类型?

perl - 在Perl中循环遍历一系列哈希

perl - s3cmd目录列表-仅文件名-perl一线?

perl - 使用 DBIx::Class 的多对多访问器

mysql - DBIx::Class 基结果类

perl - 从模型中进行 Catalyst 调用?

perl - 针对 Perl CGI::Application 身份验证系统的建议