Smarty - 无法将变量内容插入到javascript中

时间:2015-02-25 11:02:09

标签: javascript syntax smarty

我需要将带有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条件为真时才有效,否则页面加载错误:<header></header>标签之间什么都不是!因此没有加载css样式。我不明白,有没有办法修复它?

3 个答案:

答案 0 :(得分:0)

您应该删除{literal}标记。 Smarty不会在这些标记More info中执行语句。但是,如果在javascript中使用花括号,则需要在多行上编写语句:

var test = {
    value: 'test'
}

答案 1 :(得分:0)

如果您正在使用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>

答案 2 :(得分:0)

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

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

现在它的工作正常。