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

来源:互联网 发布:数据接口技术规范 编辑:程序博客网 时间:2024/06/16 19:22

今天使用,一段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

 

原创粉丝点击