2012-10-05 9 views
9

Jak zatrzymać Smarty w przypadku wystąpienia błędu, gdy używam AngularJS w tym samym szablonie. Mam szablon strony Smarty z tym kodem:Smarty PHP koliduje z AngularJS

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

Otrzymuję pustą stronę, gdy przeglądam w przeglądarce. Mam duży błąd w moim apache error_log, który zawiera następujące elementy:

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

Gdybym zamienić {{i}} dla {{4}} lub inna cyfra to działa dobrze. I mogę też używać matematyki, {{8 + 2}} pokaże 10 na stronie. Czy to Smarty robi matematykę kątowego JS?

Odpowiedz

16

Spróbuj tego:

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

cytat ze strony Smarty ...

{literal} znaczniki pozwalające blok danych, które należy brać dosłownie. Jest to zwykle używane w JavaScript lub blokach arkuszy stylów, w których {nawiasy klamrowe} kolidowałyby ze składnią ogranicznika szablonu. Cokolwiek w obrębie znaczników {literal} {/ literal} nie jest interpretowane, ale wyświetlane jest jako .

+3

Heh, nie idzie zwięzłość;) –

+0

Oczywiście! Jestem nowicjuszem w zakresie silników szablonowych, plus 2 w nocy, ale oczywistą odpowiedzią jest uciec od nawiasów. Wielkie dzięki –

20

Znacznie czystsze rozwiązanie: Można zmienić ograniczniki szablonów z angularjs wygląda następująco:

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