2013-03-23 93 views
1

我正在使用Template :: Toolkit來構建我的頁面。我有一個頁面上的鏈接列表,每個鏈接使用Jquery Tools觸發覆蓋。我想將一些CGI變量傳遞給它,但這很奇怪。我在Template中的代碼是:Perl模板工具包傳遞給Jquery工具疊加?

[% 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 %] 

問題是,概述沒有使其覆蓋。實際上,疊加層顯示爲空白。如果我爲一個字符串更改模板變量,則該字符串確實出現在模板中。有誰知道是否有一些轉義需要通過模板變量來完成?順便說一句,[%dvd.overview%]變量是有效的,因爲我可以將它轉儲到屏幕並查看字符串。

+2

您可以添加示例概覽值嗎?可能有些東西需要逃避。 – 2013-03-23 18:01:00

+0

@martinclayton:謝謝你的理解,你已經做得足夠讓我在放入哈希之前嘗試逃離概述,現在它正確傳遞到彈出窗口! - 謝謝 – user2202355 2013-03-23 19:17:23

回答

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 %]