【问题标题】:How can I use Template Toolkit on a string instead of a file?如何在字符串而不是文件上使用 Template Toolkit?
【发布时间】:2010-09-23 19:19:27
【问题描述】:

我从数据库中提取了一些字符串,我想在它们上使用 Template Toolkit,但我似乎无法弄清楚如何将字符串用作 TT 输入。有什么建议吗?

谢谢!

-fREW

【问题讨论】:

    标签: perl template-toolkit


    【解决方案1】:

    文档说明:

    过程($template, \%vars, $output, %options)

    调用 process() 方法来处理模板。第一个参数将输入模板指示为以下之一: 相对于 INCLUDE_PATH 的文件名(如果已定义); 对包含模板文本的文本字符串的引用; ...

           # text reference
           $tt->process(\$text)
               || die $tt->error(), "\n"
    

    【讨论】:

    • 好的,我让它工作了。问题是我使用了第三个参数(这样我就不必立即输出结果)并且忘记将其作为参考。以下是有效的: $template->process(\$body_template, $template_vars, \$output);
    【解决方案2】:

    来自docs

    # text reference
    $text = "[% INCLUDE header %]\nHello world!\n[% INCLUDE footer %]";
    $tt->process(\$text)
        || die $tt->error(), "\n";
    

    (看来我应该在发布之前刷新页面。)

    【讨论】:

      【解决方案3】:

      您可能会发现String::TT 是一种更好的替代方法。来自 pod 的一些预告片...

      use String::TT qw/tt strip/;
      
      sub foo {
         my $self = shift;
         return tt 'my name is [% self.name %]!';
      }
      
      sub bar {
         my @args = @_;
         return strip tt q{
            Args: [% args_a.join(",") %]
         }
      }
      

      还有……

      my $scalar = 'scalar';
      my @array  = qw/array goes here/;
      my %hash   = ( hashes => 'are fun' );
      
      tt '[% scalar %] [% scalar_s %] [% array_a %] [% hash_h %]';
      

      【讨论】:

        猜你喜欢
        • 2014-08-31
        • 2012-03-12
        • 2021-10-10
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        • 2023-04-11
        • 2011-01-08
        相关资源
        最近更新 更多