Как остановить Smarty, вызывая ошибку, когда я использую AngularJS в том же шаблоне. У меня есть шаблон страницы 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 делает математику углового?
Попробуй это:
<li ng-repeat="i in items"> <p class="item">{literal}{{i}}{/literal}</p> </li>
Цитата с сайта Smarty …
Теги {literal} позволяют записывать блок данных буквально. Обычно это используется в блоках Javascript или таблиц стилей, где {фигурные скобки} будут мешать синтаксису разделителя шаблона. Все, что находится внутри тегов {literal} {/ literal}, не интерпретируется, а отображается как-есть.
Очень чистое решение: вы можете изменить разделители шаблонов AngularJS таким образом:
angular.module('app', []) .config(['$interpolateProvider', function ($interpolateProvider) { $interpolateProvider.startSymbol('[['); $interpolateProvider.endSymbol(']]'); }]);
Вы можете настроить Angular для использования символов интерполяции, отличных от {{}}: https://stackoverflow.com/a/11108407/215945