Perl模板工具包传递给Jquery工具覆盖?

时间:2013-03-23 17:32:50

标签: perl jquery-tools template-toolkit

我正在使用Template :: Toolkit来构建我的页面。我在页面上有一个链接列表,每个链接都使用Jquery Tools触发叠加。我想传递一些CGI变量,但它表现得很奇怪。我在Template中的代码是:

[% FOREACH dvd IN dvd_chart %]

<div class="thumbnail">
<a href="popup.pl?overview=[% dvd.overview %]" rel="#overlay" style="text-decoration:none"><img  src="[% dvd.thumbnail %]" /></a>
<br />

</div>
[% END %]

问题是概述不会覆盖到叠加层。事实上,叠加层显示为空白。如果我更改字符串的Template变量,则字符串会出现在模板中。有没有人知道是否需要进行一些转义来传递Template变量?顺便说一句,[%dvd.overview%]变量有效,因为我可以将其转储到屏幕并查看字符串。

1 个答案:

答案 0 :(得分:0)

模板工具包针对这种情况具有内置过滤器(specifically html and html_entity)。特别是在这里使用它们是一个好主意,因为即使非转义内容正确呈现,正如您所提到的那样,这些是从客户端传递的CGI变量。渲染未转义的客户端提供的数据是危险的。

以下是一个如何适当逃避的示例,不会使用多余的代码混淆您的业务逻辑。只需将| html添加到变量输出。

[% FOREACH dvd IN dvd_chart %]

<div class="thumbnail">
<a href="popup.pl?overview=[% dvd.overview | html %]" rel="#overlay" style="text-decoration:none"><img  src="[% dvd.thumbnail |html %]" /></a>
<br />

</div>
[% END %]