0

据我了解,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::TTCatalyst::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不会site/html像我只使用常规时那样进入Template Toolkit(通常site/layout进入[% content %]in site/html)。我在这里做错了吗?我想用它Template::Alloy来提高速度,但前提是我可以让它工作:) 谢谢你的帮助!

4

1 回答 1

0

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

如果你总是需要这样做,为什么不把第二个WRAPPER指令放在里面$host/site/html.tt呢?

于 2013-05-29T23:54:13.840 回答