在JavaScript中的Smarty变量

时间:2014-07-15 15:28:57

标签: javascript php smarty

我真的从Smarty开始,我不明白这个事实:

如果我将下一个代码放在我的模板index.tpl

<script type="text/javascript">
  function toAlert() {
    alert('{$text}' );
  }
</script>

我可以访问函数toAlert并显示Smarty变量{{$ text}}的内容,但如果我将此代码放入js文件lije javascript.js中,我尝试通过放入de模板来访问它链接:

我也无法访问该功能。

任何人都可以告诉我为什么或帮助我能找到这个具体信息吗?谢谢!!

2 个答案:

答案 0 :(得分:3)

Smarty 2需要擒纵“{”和“}”字符,您可以使用{ldelim}和{redlim}单独转义它们或使用{literal} {/ literal}包装整个文本块。当有嵌入式智能标签时,使用{ldelim}和{rdelim}通常更干净,例如:

<script type="text/javascript">
  function toAlert() {ldelim}
    alert('{$text}' );
  {redlim}
</script>

Smarty 3方便地忽略了由空格包围的“{”和“}”字符,因此您的javascript示例将按原样运行。

答案 1 :(得分:2)

您应该将此代码放在TPL文件中以使其正常工作。只有TPL文件被处理为Smarty文件,你可以在那里使用Smarty变量。

您的代码放置应该在index.tpl文件中开箱即用,但如果没有尝试:

<script type="text/javascript">
{literal}
  function toAlert() {
    alert('{/literal}{$text}{literal}' );
  }
{/literal}
</script>