5

如何仅渲染BLOCK模板中的特定内容?

假设我有这个BLOCKtext.tt一个模板工具包文件:

[% BLOCK someblock %] some block test blah blah blah [% END %]

我希望能够用来process()处理那部分:

$tt->process("text.tt/someblock", {...}, {...});

这是处理这个问题的正确方法吗?

4

1 回答 1

8

我认为它是您可能追求的 EXPOSE_BLOCKS 选项?

use strict;
use warnings;
use Template;

my $tt = Template->new({
    INCLUDE_PATH  => '.',
    EXPOSE_BLOCKS => 1,
});

$tt->process( 'test.tt/header', { tit => 'Weekly report' } );

for my $day qw(Mon Tues Weds Thurs Fri Sat Sun) {
    $tt->process( 'test.tt/body', { day => $day, result => int rand 999 } );
}

$tt->process( 'test.tt/footer', { tit => '1st Jan 1999' } );

 

测试.tt:

[% BLOCK header %]
[% tit %]
[% END %]

[% BLOCK body %]
* Results for [% day %] are [% result %]
[% END %]

[% BLOCK footer %]
Correct for week commencing [% tit %]
[% END %]

 

将生成此报告(带有随机数):

每周报告

  • 周一的结果是 728

  • 周二的结果是 363

  • 婚礼的结果是 772

  • 星期四的结果是 864

  • 周五的结果是 490

  • 周六的结果是 88

  • 太阳的结果是 887

正确于 1999 年 1 月 1 日开始的一周

 

希望有帮助。

于 2009-08-15T12:18:05.980 回答