如何在Perl的Template Toolkit中仅渲染特定的“BLOCK”?

时间:2009-08-15 07:29:42

标签: perl template-toolkit

如何只在模板中呈现特定的BLOCK

假设我在BLOCK中有text.ttTemplate Toolkit文件:

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

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

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

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

1 个答案:

答案 0 :(得分:7)

我认为它可能是你之后的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' } );

test.tt:

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

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

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

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

  

每周报告

     
      
  • 周一的结果是728

  •   
  • 周二的结果是363

  •   
  • Weds的结果为772

  •   
  • 周四的结果是864

  •   
  • 周五的结果是490

  •   
  • 周六的结果为88

  •   
  • Sun的结果为887

  •   
     

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

希望有所帮助。