【问题标题】:How can I dynamically process all .html files through the Catalyst Framework?如何通过 Catalyst 框架动态处理所有 .html 文件?
【发布时间】:2012-01-18 21:09:36
【问题描述】:

我想使用 Catalyst 来处理所有请求:包括 html(与 Template Toolkit 混合)以及那些通常打算由 Catalyst 处理的请求。我知道 Catalyst::Plugin::Static::Simple,但这似乎不像我所描述的那样,因为它只是静态打印文件。

例如,我想显示用户是否在没有使用 ajax 或 SSI 的情况下登录 index.html。除此之外还有很多其他案例。

这可能有一个简单的答案......

【问题讨论】:

  • 如果你显示用户是否登录,那不是动态页面吗?
  • 是的,这是真的,对吧?我将更改我原来的描述。
  • 我要不要在 Root.pm 中有一个自动子程序来检查 url 的结尾是否为 *.html,检查文件是否存在,然后将其设置为 $c- >stash->{模板}?
  • 或多或少。正是您刚才所说的逻辑,但在默认处理程序中,因此可以由 Catalyst 正确调度。如果您有一个大的 HTML 目录树,并且与许多 Catalyst 控制器混合,您可能会发现这不能很好地扩展。但如果它们都在一个目录中,那就很简单了。

标签: perl catalyst template-toolkit


【解决方案1】:

感谢您的指点,RET。我的解决方案非常简单。

在直接提供文件之前,我将 nginx 配置指向我的 Catalyst 应用程序,并将我的 html 文件的路径添加到 myapp.pm 中的 TT 配置中。

以下是我在默认子例程中添加到我的 Root.pm 控制器的 sn-p 的基础知识:

if($c->req->path =~ m{\.html$} || $c->req->path =~ m{\.htm$}) {
    $c->stash->{template} = $c->req->path;
    $c->detach;
}
elsif($c->req->path !~ m{[.]+}) {
    $c->stash->{template} = $c->req->path . '/index.html';
    $c->detach;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多