Smarty-可以't将变量内容插入javascript

Smarty - can't insert variable content into javascript

本文关键字:变量 插入 javascript 可以 Smarty-      更新时间:2024-05-18

我需要将具有Smarty语法的变量的内容插入到javascript中,如下所示。脚本正在检查页面是否从发送给客户的电子邮件中的验证链接打开。

{literal}
<script>
   if ((document.URL).indexOf("validation") > -1) {      
      $('.loginForm').append( 
          "<p class='middleWarningTextP loginMessage'>{/literal}{$VALIDATION_NOTICE->getMessage()}{literal}</p>");
   }
</script>
{/literal}

问题是,只有当javascript条件为true时,这才有效,否则页面加载错误:在<header></header>标记之间什么都不是!因此不会加载css样式。我不明白,有办法修理它吗?

您应该删除{literal}标记。Smarty不执行这些标记中的语句更多信息。但是,如果在javascript中使用大括号,则需要在多行中编写语句:

var test = {
    value: 'test'
}

如果您使用的是Smarty 3

<script>
   if ((document.URL).indexOf("validation") > -1) {      
      $('.loginForm').append( 
          "<p class='middleWarningTextP loginMessage'>{$VALIDATION_NOTICE->getMessage()}{literal}</p>");
   }
</script>

也就是说,只需删除{literal}标签

如果你用的是Smarty 2,我认为它有点像

<script>
   if ((document.URL).indexOf("validation") > -1) {ldelim}      
      $('.loginForm').append( 
          "<p class='middleWarningTextP loginMessage'>{$VALIDATION_NOTICE->getMessage()}</p>");
   {rdelim}
</script>

问题不在于{literals}标记或语法。问题是在某些情况下没有设置$VALIDATION_NOTICE->getMessage()变量。因此,我添加了这个条件:

{if !is_array($VALIDATION_NOTICE) and $VALIDATION_NOTICE}{$VALIDATION_NOTICE->getMessage()}{/if}

现在它工作正常。