我试图在Template Toolkit .tt文件中调用外部Perl模块.我想要使用的模块是Util,我想打电话Util::prettify_date.我能够使用Template Toolkit的插件接口包含这个模块:我设置了load,new和error函数(如下所述:http://template-toolkit.org/docs/modules/Template/Plugin.html),并使用它包括它[% USE Util %].
这工作正常,但我想知道是否有一种方法可以USE在Template Toolkit中使用Perl模块而无需插件 - 如果它们.制作插件的主要问题是我必须使用Util面向对象的所有函数(即接受$ self作为第一个参数),这实际上没有意义.
我有一系列路径,我想用Template Toolkit读出来.如何访问此数组的数组元素?情况是这样的:
my @dirs;
opendir(DIR,'./directory/') || die $!;
@dirs = readdir(DIR);
close DIR;
$vars->{'Tree'} = @dirs;
Run Code Online (Sandbox Code Playgroud)
然后我像这样调用模板页面:
$template->process('create.tmpl', $vars)
|| die "Template process failed: ", $template->error(), "\n";
Run Code Online (Sandbox Code Playgroud)
在这个模板中,我想在数组中创建一个目录树.我怎样才能访问它们?
我的想法是从foreach像这样的模板开始
[% FOREACH dir IN Tree.dirs %]
$dir
[% END %]
Run Code Online (Sandbox Code Playgroud) 我有一个原始电子邮件,(MIME多部分),我想在网站上显示这个(例如在iframe中,带有HTML部分和纯文本部分的标签等).是否有任何CPAN模块或Template :: Toolkit插件可用于帮助我实现这一目标?
目前,看起来我必须使用Email :: MIME解析消息,然后迭代所有部分,并为所有不同的mime类型编写处理程序.
这是一个很长的镜头,但我想知道是否有人已经完成了这一切?如果我自己尝试,那么编写处理程序将是一个漫长且容易出错的过程.
谢谢你的帮助.
我必须根据用户所处的状态显示不同的医疗表格.还有许多州共享的默认表格.这些医疗表格都是用Template Toolkit编写的,它们包含在较大的模板中.状态可作为标准化形式的变量使用.
我需要选择特定于状态的模板(如果存在),否则回退到默认模板.我最好怎么做呢?
INCLUDE_PATH 已被用于控制网站样式之间的切换.
我试图在模板中包含一个模板,如下所示:
parent.tt
<div class="row-fluid">
<div class="span3">
[% INCLUDE my_sidebar]
</div><!--/span-->
</div>
Run Code Online (Sandbox Code Playgroud)
my_sidebar.tt与parent.tt存在于同一文件夹中(/ myapp/views)
我对config.yml进行了以下更改:使用ABSOLUTE
template: "template_toolkit"
engines:
template_toolkit:
encoding: 'utf8'
start_tag: '[%'
end_tag: '%]'
ABSOLUTE : 1
Run Code Online (Sandbox Code Playgroud)
parent.tt包含:
[% INCLUDE /myapps/views/my_sidebar %]
Run Code Online (Sandbox Code Playgroud)
有了RELATIVE
template: "template_toolkit"
engines:
template_toolkit:
encoding: 'utf8'
start_tag: '[%'
end_tag: '%]'
RELATIVE : 1
INCLUDE_PATH: /myapps/views
Run Code Online (Sandbox Code Playgroud)
parent.tt包含:
[% INCLUDE my_sidebar %]
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下,我都会收到以下错误:
core - template - file error - my_sidebar: not found at /.../csm/64-bit/cpan/5.16.1-2012.09/lib/Dancer/Template/Abstract.pm line 90.
Run Code Online (Sandbox Code Playgroud) 我正在使用Catalyst和Template :: Toolkit作为我的模板系统.我希望能够渲染模板的特定部分,然后将它们返回给我,这样我就可以将它们存储在变量中.Template :: Toolkit 文档提到您可以这样做:
my $content = $c->forward($c->view('HTML'), "render", $template_name);
Run Code Online (Sandbox Code Playgroud)
但是,每当我这样做,我只是得到这个错误:
file error - : not found
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么?谢谢!
[% %]和[%- -%]Template Toolkit有什么区别?
我正在尝试创建一个测试文件,使用模板工具包将模板值输入到字符串中,但我不知道要包含哪些检查/测试以确保模板工具包正确处理字符串。这是我的代码:
#!/usr/bin/env perl
use lib ('./t/lib/');
use strict;
use warnings;
use Template;
use Test::More tests => 1;
# options/configuration for template
my $config = {
#PRE_PROCESS => 1, # means the templates processed can use the same global vars defined earlier
#INTERPOLATE => 1,
#EVAL_PERL => 1,
RELATIVE => 1,
OUTPUT_PATH => './out',
};
my $template = Template->new($config);
# input string
my $text = "This is string number [%num%] .";
# template placeholder variables
my $vars = {
num => …Run Code Online (Sandbox Code Playgroud) 如何修改Dancer2站点中Template Toolkit的默认配置以使用Template :: Stash :: AutoEscaping?
是否可以编写向调用者返回哈希值的宏或块?
我试图模块化一些模板代码:
[%-
MACRO MakeSomeThing(something) BLOCK;
s = { a => 'a',
b => something,
c => 'c'
};
# RETURN s; # not allowed
# s; # just returns the hash ref string (HASH(0x32e42e4))
END;
newOb = MakeSomeThing('foo');
dumper.dump({'newOb' => newOb});
%]
Run Code Online (Sandbox Code Playgroud)
有没有办法实现类似的模式?