【问题标题】:perl Template::Alloy with Catalyst not displaying properlyperl Template::Alloy with Catalyst 无法正确显示
【发布时间】:2013-05-25 08:26:43
【问题描述】:

据我了解,Template::Alloy::TT 应该可以与 Template Toolkit 互换,但是我在尝试将其中一个与另一个交换时遇到了一些问题。这是我的视图文件的配置:

package maypp::View::HTML;
use strict;
use base 'Catalyst::View::TT';

__PACKAGE__->config({
    INCLUDE_PATH => [
        myapp->path_to( 'root', 'src' ),
        myapp->path_to( 'root', 'lib' ),
    ],  
    PRE_PROCESS  => 'config/main',
    WRAPPER      => 'site/wrapper',
    ERROR        => 'error.html',
    TIMER        => 0,
    render_die   => 1,
    COMPILE_DIR => '/tmp/compiled_templates', #caches compiled templates
    STAT_TTL => 1, #how long to cache templates before seeing if there are any changes
    TEMPLATE_EXTENSION => '.html',
});

我认为将Catalyst::View::TT 更改为Catalyst::View::TT::Alloy 将是我开始使用Template::Alloy 所要做的所有事情(这是我之前的程序)。但是,每当我改变它时,我都没有得到正确的输出。下面是我的包装文件:

[% IF template.name.match('\.(css|js|txt)');
    debug("Passing page through as text: $template.name");
     content;
   ELSE;
       debug("Applying HTML page layout wrappers to $template.name\n");
       content WRAPPER "$host/site/html" + "$host/site/layout";
   END;
-%]

site/html 将被处理,但是 site/layout 不会像我只使用常规 Template Toolkit 时那样进入 site/html(通常 site/layoutsite/html 中进入 [% content %])。我在这里做错了什么吗?我想使用Template::Alloy 来提高速度,但前提是我可以让它工作:) 谢谢你的帮助!

【问题讨论】:

    标签: perl view catalyst template-toolkit


    【解决方案1】:

    只是在黑暗中尝试一下,我想说 TT::Alloy 可能不支持多个 WRAPPER + 指令。在 TT 开发的几年中,我从未使用过它,但这并不是说它在某个地方不流行。我的经验是应用程序可能会根据上下文在包装器 A 和包装器 B 之间切换,但是将 B 包装在 A 中?没那么多。

    如果您总是需要这样做,为什么不将第二个 WRAPPER 指令放在 $host/site/html.tt 中?

    【讨论】:

    • 有趣的是content WRAPPER /site/html + site/layout; 工作正常,但是我需要$host 来根据域显示不同的模板。通过将第二个WRAPPER 指令放在$host/site/html.tt 中,您的意思是尝试使用[% content WRAPPER "$host/site/layout" %] 而不是像我现在这样的[% content %]
    • 那么在这种情况下,也许是$host 的插值问题?试试host _ '/site/html' 看看是否有什么不同。
    • 我试过了,但它给了我这个错误:file error - /site/layout absolute paths are not allowed (set ABSOLUTE option)
    • 嗯,这表明主机变量是空的。试试[% SET t1 = host _ '/site/html'; t1 | stderr; WRAPPER t1; -%] 之类的东西,看看它会产生什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2012-05-05
    • 2021-04-21
    • 1970-01-01
    • 2014-04-23
    • 2018-06-09
    • 1970-01-01
    相关资源
    最近更新 更多