2012-10-05 25 views
9

Cómo dejo que Smarty genere un error cuando estoy usando AngularJS en la misma plantilla. Tengo una plantilla de página Smarty con este código:Choque de Smarty PHP con AngularJS

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

Y obtengo una página en blanco cuando veo en un navegador. Consigo un gran error en mi error_log de Apache, que contiene lo siguiente:

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

Si yo cambiaré {{i}} para {{4}} o cualquier otro dígito que trabaja muy bien. Y también puedo usar matemáticas, {{8 + 2}} mostrará 10 en la página. ¿Ese es el Smarty haciendo las matemáticas del angularJS?

Respuesta

16

Prueba esto:

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

Presupuesto de Smarty sitio ...

{literal} etiquetas permiten un bloque de datos que deben tomarse literalmente. Esto es normalmente utilizado en bloques de JavaScript o de hojas de estilo donde {rizado llaves} interferiría con la sintaxis del delimitador de la plantilla. Cualquier cosa dentro de etiquetas {literal} {/ literal} no se interpreta, pero se muestra como está.

+3

Je, ahí va concisión;) –

+0

¡Por supuesto! Soy nuevo en los motores de plantillas, además eran las 2 a.m., pero la respuesta obvia es escapar de los corchetes. Gracias un montón –

20

solución mucho más limpio: Puede cambiar los delimitadores plantilla de AngularJS así:

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