标签: template-toolkit

模板工具包IF在空数组上返回true,我可以将其设为false吗?

所以,如果我给模板工具包一个引用数组作为参数

ARRAY_REF => \@array
Run Code Online (Sandbox Code Playgroud)

然后在模板中包含以下代码

[% IF ( ARRAY_REF ) %]
  Do something
[% ELSE %]
  Do something else
[% END %]
Run Code Online (Sandbox Code Playgroud)

其他情况永远不会被触发.

用.替换参数代码

ARRAY_REF => @array ? \@array : undef;
Run Code Online (Sandbox Code Playgroud)

似乎解决了这个问题,但我想知道是否有一种方法可以让模板工具包评估一个空数组(通过引用传递)为false,因为我的项目中有很多实例,我相信这个实例正在被使用(如在HTML模板中)亲它按预期工作).

提前谢谢大家的帮助.

perl template-toolkit

8
推荐指数
2
解决办法
6507
查看次数

是否有使用HTML :: Template而不是TT的Catalyst教程?

我一直在浏览几个Catalyst教程,他们都倾向于使用Template Toolkit而不是HTML :: Template.

我花了很多时间使用HTML :: Template而且我喜欢它,虽然我可以看到TT的强大功能,但我不知道它,我觉得我会一次学习两件事; 另外,因为它在模板中进行处理,我不确定我的HTML :: Template $template->param(foo => \$bar);代码会在哪里发生!

有人知道使用HTML :: Template的好教程/代码示例吗?

perl catalyst template-toolkit perl-html-template

7
推荐指数
1
解决办法
969
查看次数

Mojolicious :: Lite with Template Toolkit

我正在尝试使用Template Toolkit作为Mojolicious :: Lite中的默认渲染器.是)我有的:

use strict;
use warnings;

use Mojolicious::Lite;
use Mojolicious::Plugin::TtRenderer;
plugin tt_renderer => { template_options => { INCLUDE_PATH => './tmpl', DEBUG => 1 } };

get '/' => sub {
  my $self = shift;

  $self->render( 'index' );
};

app->renderer->default_handler( 'tt' );
app->start;
Run Code Online (Sandbox Code Playgroud)

当我尝试点击测试服务器时,我得到:

[Fri Oct 12 14:02:02 2012] [info] Listening at "http://*:3000". 
Server available at http://127.0.0.1:3000. 
[Fri Oct 12 14:02:08 2012] [debug] Your secret passphrase needs to be changed!!! 
[Fri Oct 12 14:02:08 2012] [debug] GET / (Mozilla/5.0 …
Run Code Online (Sandbox Code Playgroud)

perl web-frameworks template-toolkit mojolicious

7
推荐指数
1
解决办法
1515
查看次数

从Text :: Xslate中的Template :: Toolkit获取WRAPPER功能

我已经将Template :: Toolkit用于我的最后几个Catalyst项目,并且有一个我喜欢使用的设置,可以清晰地分离我的模板.现在我希望使用Text :: Xslate,但是我无法弄清楚我是否可以进行相同的设置.以下是我通常用于Template :: Toolkit的内容.

__PACKAGE__->config({
    ...
    WRAPPER      => 'site/wrapper',
    ...
});
Run Code Online (Sandbox Code Playgroud)

包装纸

[% content WRAPPER site/html + site/layout %]
Run Code Online (Sandbox Code Playgroud)

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>[% template.title or site.title %]</title>
  <style type="text/css">
  </style>
 </head>
 <body>
[% content %]
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)

布局

<div id="header">[% PROCESS site/header %]</div>

<div id="content">
[% content %]
</div>

<div id="footer">[% PROCESS site/footer %]</div>`
Run Code Online (Sandbox Code Playgroud)

然后页眉和页脚都有自己的内容.我喜欢这个解决方案,因为所有内容都是干净利落的,我不会在内容中分解任何div标签,因为必须将开头标记放在标题中并关闭页脚.它看起来像TTerse语法有一些包装器功能,但我不确定是否允许我重新创建我通常做的.我也发现这个答案说你可以在理论上使用包装器,但实际上没有给出任何例子.

perl catalyst template-toolkit text-xslate

7
推荐指数
1
解决办法
86
查看次数

如何在模板工具箱中获取随机数?

我想使用模板工具包获得一个随机数.它不必特别随机.我该怎么做?

template-toolkit

6
推荐指数
2
解决办法
2789
查看次数

模板工具包字符编码

似乎模板工具包没有正确处理编码.

我传递template->process一个文件名(在哪里获取模板),一个哈希引用(包含所有参数)和一个标量引用(在哪里放置输出)然后我返回它,然后将其显示给用户.

当我给它一个带有变音符号的字符串时,html输出包括一个黑色菱形,带有白色问号代替每个字母(但字母数正确).任何其他角色都很好.

我在调用模板 - >进程之前使用warn打印出字符串,此时它很好,从我可以告诉它在template->process调用期间事情变成垃圾.

有任何想法吗?我尝试过使用ENCODING => "utf8",binmode => ":utf8"但对输出没有任何影响.

这是我的代码,其中一些胖子被修剪出来只是为了显示我对模板 - >过程的调用,注意如果我遗漏{binmode => 'utf8'}它就没有效果了.

<put variables in hash referenced to by vars>
<print out variables in has referenced to by $var>
my $data;
$template->process( $self->filename, $vars, \$data, {binmode => ':utf8'}) || die "Template process failed: ", $template->error();
return $data;
Run Code Online (Sandbox Code Playgroud)

求助了 嘿所有感谢您的回答,问题结果是模板进程完成,我们在输出之前将字符串写入临时文件,因此我们还需要为文件设置binmode,代码现在看起来喜欢:

<put variables in hash referenced to by vars>
<print out variables in has …
Run Code Online (Sandbox Code Playgroud)

apache perl template-toolkit

6
推荐指数
1
解决办法
4331
查看次数

Template Toolkit和懒惰的Moose属性 - 如何让它们表现出来?

如果我使用Moose在perl类中声明了lazy属性,并且该属性正在使用builder:

has 'colors' => (
  is => 'rw',
  isa => 'ArrayRef',
  lazy => 1,
  builder => '_build_colors',
);
Run Code Online (Sandbox Code Playgroud)

然后在Template :: Toolkit模板中,我将尝试使用此属性:

[% FOREACH color IN colors %]
...
[% END %]
Run Code Online (Sandbox Code Playgroud)

我什么都没得到.在使用TT处理属性之前,我必须在perl脚本中手动调用此attr.TT有没有办法自己初始化这个attr?

perl moose template-toolkit

6
推荐指数
1
解决办法
420
查看次数

模板工具包,测试嵌套循环中的最后一次迭代

我正在使用模板工具包来形成一个简单的JSON响应(请参阅下面的代码).我需要在响应的所有元素之后加上逗号,除了最后一个.

我相信我需要使用TTs迭代器,但是我没有把它弄好.
使用此代码,仍然会在最后一个元素的末尾打印逗号.

问题在于包含的部分

[% UNLESS outer.last && loop.last %],[% END %]
Run Code Online (Sandbox Code Playgroud)

除非外循环和内循环在最后一次迭代中,否则应该添加逗号.

任何有关我出错的帮助都非常感谢.

{ "success": true, "filesdata": [
[%~ USE outer = iterator(objects); FOREACH object IN outer;
    FOREACH rep IN object.reps;
        IF rep.rep == reptype %]
{ "id":"[% object.id | xml %]", "url":"[% rep.src | xml %]", "story":"[% object.story | xml %]" }[% UNLESS outer.last && loop.last %],[% END %]
        [%~ END;
    END;
END ~%]
] }
Run Code Online (Sandbox Code Playgroud)

perl template-toolkit

6
推荐指数
2
解决办法
1018
查看次数

以干净的方式查看变量内容

所以我用来查看变量内容的方法是在我的模板工具包中使用Data :: Dumper:

[% USE Dumper %]
[% Dumper.dump(varname) %]

但是我得到的结果有点乱 - 关于表关系,列类型和attrbitues等的所有信息.

我想知道是否有一种方法可以获得一个"干净"的变量内容 - 因为只有来自查询的当前结果+相关的结果集(即当我使用带有cakephp框架的php时,有一个'debug(varname)'命令提供了这样的结果,看起来像这样http://pastebin.com/Hut0LnAb).

perl catalyst template-toolkit

6
推荐指数
1
解决办法
221
查看次数

Catalyst中的详细调试屏幕?

在我的舞台服务器中,我想激活调试,以便客户端可以在应用程序进入生产服务器之前找到自己的错误.

但我只想要消息的第一部分,而不是请求或会话数据.

例如:无法渲染模板"templates/home.tt2:file error - templates/inc/heater:not found".

该消息足以让我和我的客户看到"标题"调用拼写错误.

请求为客户提供了大量无关信息,但也有大量内部开发信息,应该一直隐藏!

问候

perl catalyst template-toolkit

6
推荐指数
1
解决办法
364
查看次数