Smarty PHP与AngularJS冲突

9
我该如何避免在同一模板中使用AngularJS时出现Smarty错误?我有一个Smarty页面模板,其中包含以下代码:
 <li ng-repeat="i in items">
      <p class="item">{{i}}</p>
 </li>

当我在浏览器中查看时,页面是空白的。在我的apache error_log中,我得到了一个大错误,其中包含以下内容:

 PHP Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template ... <p>{{i}}</p>; unknown tag "i

如果我将{{i}}替换为{{4}}或任何其他数字,它都可以正常工作。 我也可以使用数学公式,{{8+2}}将在页面上显示10。这是Smarty执行angularJS的数学运算吗?

3个回答

20

更加清晰的解决方案是:你可以这样改变AngularJS的模板分隔符:

angular.module('app', [])
  .config(['$interpolateProvider', function ($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
    $interpolateProvider.endSymbol(']]');
  }]);

17

试试这个:

<li ng-repeat="i in items">
    <p class="item">{literal}{{i}}{/literal}</p>
</li>

来自Smarty网站的引用...

{literal}标签允许一段数据被视为字面量。通常在JavaScript或样式表块周围使用{curly braces},以避免与模板分隔符语法产生冲突。{literal}{/literal}标签内的任何内容都不会被解释,而是原样显示。


当然!我对模板引擎还很陌生,而且那时是凌晨两点钟,但显而易见的解决方法就是转义括号。非常感谢你的帮助! - Pete

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接