Cette question semble avoir trouvé une réponse, mais une solution plus élégante, qui n'a pas été mentionnée, consiste à placer les accolades entre guillemets entre les accolades brins, comme suit :
{{ '{{myModelName}}' }}
Si vous utilisez une variable pour le contenu, faites ceci à la place :
{{ '{{' ~ yourvariable ~ '}}' }}
Vous devez utiliser guillemets simples et non des guillemets. Les guillemets doubles permettent l'interpolation des chaînes de caractères par Twig. Vous devez donc faire plus attention à leur contenu, surtout si vous utilisez des expressions.
Si vous détestez toujours voir toutes ces accolades, vous pouvez aussi créer une simple macro pour automatiser le processus :
{% macro curly(contents) %}
{{ '{{' ~ contents ~ '}}' }}
{% endmacro %}
Enregistrez-le comme un fichier et importez-le dans votre modèle. J'utilise ng
pour le nom parce qu'il est court et doux.
{% import "forms.html" as ng %}
Vous pouvez également placer la macro en haut de votre modèle et l'importer en tant que _self. (voir ici) :
{% import _self as ng %}
Utilisez-le ensuite comme suit :
{{ ng.curly('myModelName') }}
Ces sorties :
{{myModelName}}
...et un suivi pour ceux qui utilisent MtHaml à côté de Twig. MtHaml permet d'utiliser les boucles AngularJS de manière normale, car tout code Twig est accessible par - et = au lieu de {{ }}. Par exemple :
HTML simple + AngularJS :
<tr ng-repeat="product in products">
<td> {{ product.name }} </td>
</tr>
MtHaml + AngularJS :
%tr(ng-repeat="product in products")
%td {{ product.name }}
MtHaml + AngularJS avec Twig de style MtHaml :
- set twigVariable = "somevalue"
= twigVariable
%tr(ng-repeat="product in products")
%td {{ product.name }}
2 votes
Duplicata possible de Délimiteur personnalisé en Angular JS
10 votes
Une autre solution spécifique à la brindille pour la folie des moustaches est d'utiliser la fonction
verbatim
étiquette ; par exemple{% verbatim %}{{ angular_var }}{% endverbatim %}
pour préserver vos moustaches pour AngularJS : twig.sensiolabs.org/doc/tags/verbatim.html0 votes
Je ne m'adresse pas à l'auteur de la question, mais aux futurs lecteurs : si vous cherchez une réponse à cette question, envisagez d'éviter complètement le rendu des templates côté serveur, si vous pouvez vous le permettre (si votre contenu principal se trouve dans une zone authentifiée ou si votre principal moteur de recherche comme source de trafic est Google (il peut analyser les SPA JS)).
1 votes
@OZ_ L'argument des moteurs de recherche contre AngularJS et autres devient tout à fait redondant lorsqu'on utilise des services tels que prerender.io .