smarty syntax error: unrecognized tag 'var' 的原因及解决方法

很久不用smarty了,都忘得差不多了,今天使用,一段js代码上遇到如下问题:

smarty syntax error: unrecognized tag 'var'.....

 

屏蔽js后,就正常了。原因何在?为啥呢? 难道smarty的模板中不能直接写js???

网上百度了一下,知道了原因:原来是因为我使用的是smarty默认的界定符 :{ }

js代码中函数中刚好有这样一段: function functionName(){ var id=...} ,var不是smarty的标签,当前不识别了。

 

原因找到了,问题就好解决了,解决的方法就是:重新设置界定符。安装一篇文章上说的,使用:{literal}和{/literal} ,写起来有点繁琐(当然大多也是粘贴复制了,不易出错),不过很直观。

 

====下面这篇文章说得还不错:http://www.9enjoy.com/post/312/ (原文的广告有点多,我单独贴过来了)

 

使用smarty模板时,默认的定界符是{和}。当页面的代码中包含保留词或定界符时,就会出现如下的错误提示:

引用
Fatal error: Smarty error: [in hx.html line 100]: syntax error: unrecognized tag: ......



翻阅了一下Smarty官方手册,找到解决方案。

整理了一下,三种解决方法。

1.更换定界符。

$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';
即使用<!--{和}-->来作为定界符,但在模板写变量时就会比较麻烦,个人不建议这样操作。
详细说明:http://www.itlearner.com/code/smarty_manual/language.escaping.html

2.在代码中用{ldelim},{rdelim}来替代你设定的定界符。
详细说明:http://www.itlearner.com/code/smarty_manual/language.function.ldelim.html

3.用{literal}和{/literal}来包含你的代码。
我推荐使用这种方法,至少我是觉得这种方法是最方便的。把可能会出问题的代码前后加上{literal}和{/literal}即可。
详细说明:http://www.itlearner.com/code/smarty_manual/language.function.literal.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值