当我包含一个模板并在其中更改模板的路径时,是否会执行某种类型的钩子?
例如:
[% INCLUDE test %]我想将“测试”的路径改为“AE/test.tt”或“FR/test.tt”。
其思想是更改模板的路径,而不更改包含所在的模板。
发布于 2012-07-03 11:13:04
通常这样做的方法是在构造INCLUDE_PATH对象时使用Template参数:
my $tt = Template->new({INCLUDE_PATH => 'AE'});构建一个新的Template实例并不是什么大不了的事情,因此,在处理模板的时候,没有理由不动态创建一个新的实例,但是,如果您处于一个持久的环境中,并且真正需要性能,那么始终可以选择创建多个:
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);发布于 2012-07-03 09:38:34
我认为这是可能的,就像下面的Template示例:
[% mytest = 'AE/test.tt' %]
[% INCLUDE $mytest %] # 'AE/test.tt'这里没测试过。
请参阅INCLUDE
https://stackoverflow.com/questions/11308118
复制相似问题