Smarty模板中的变量自动视图

时间:2012-03-19 20:30:30

标签: smarty

我最近发现,与Django模板引擎不同,Smarty不会自动转义变量,我需要在模板中的大多数变量旁边放置。

关注文档,http://www.smarty.net/docsv2/en/variable.default.modifiers.tpl我需要设置默认修饰符,不需要吗?

所以,这是我的代码:

$smarty = new Smarty();
$smarty->default_modifiers = array('escape:"htmlall"');

...并且在我在它们旁边添加|转义之前,仍然没有转义变量。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

如果您使用的是Smarty 3,请尝试以下操作:

$smarty = new Smarty();
$smarty->loadFilter(Smarty::FILTER_VARIABLE, "htmlentities");

多田!

更新: Smarty::FILTER_VARIABLE自2014年11月28日起未记录。如果您想坚持$smarty->escape_html = true,请使用offical docs

答案 1 :(得分:0)

看来此功能已从Smarty v3中删除,文档已过时。参见:

http://www.smarty.net/forums/viewtopic.php?p=62207

我建议一个解决方法 - 这是模板级别。创建一个新的样式v3函数来处理过滤,或者做一个简单的包含。

包含方法

将它放在clean.tpl文件中: {$text|escape:htmlall}

然后调用{include file=clean.tpl text=$myvariabletofilter}

功能方法

Smarty的新功能也可以解决这个问题:

{function clean}
{$text|escape:htmlall}
{/function}

并调用{clean text=$myvariabletofilter}

与往常一样,请确保将这些内容修剪正确,并且不要插入不必要的空格。