Template Toolkit include 钩子?

4

当我包含一个模板时,是否有一种钩子可以执行,在其中我可以更改模板的路径?

例如:

[% INCLUDE test %]

我希望将路径更改为“test”,例如“AE/test.tt”或“FR/test.tt”。
这个想法是更改模板的路径,而不更改包含该路径的模板。
2个回答

5

通常做法是在构建Template对象时使用INCLUDE_PATH参数:

my $tt = Template->new({INCLUDE_PATH => 'AE'});

建立一个新的模板实例并不是什么大问题,因此在处理模板时随时创建一个新的模板实例没有强烈的理由不这样做。但是,如果您处于持久环境中,并且确实需要性能,则始终可以选择创建多个模板实例:

my %tt;
$tt{ae} = Template->new({INCLUDE_PATH => 'AE'});
$tt{fr} = Template->new({INCLUDE_PATH => 'FR'});
# ... code ... code ... code ...
$lang = 'ae';
# ... code ... code ... code ...
$tt{$lang}->process($template_name);

10倍这可能有效,因为我可以将子程序传递给INCLUDE_PATH(我正在使用Dancer,并使用内置的模板引擎处理)。就我所知,没有任何类型的钩子可以允许我更改模板名称或任何类型的内置别名功能(例如,一个地方可以传递哈希和INCLUDE以使用传递的模板名称作为键,值为模板的实际路径),我是对的吗? - bliof
我不知道有任何钩子或别名功能。 - Dave Sherohman

2

想法是动态更改模板的路径。 - bliof

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接