38 votes

Twig : empêcher l'analyse des modèles côté client

J'ai besoin d'éditer une partie des modèles de guidon côté client, dont les balises sont similaires aux balises 'say' de Twig :

  <script type="text/x-handlebars">
    {{#view App.MyView}}
      <h1>Hello world!</h1>
    {{/view}}
  </script>

Et twig tente d'analyser ces modèles. Comment puis-je l'en empêcher ? Est-il possible de marquer une section d'un modèle comme étant du texte brut ?

47voto

Molecular Man Points 15187

Il y a brut à cette fin :

<script type="text/x-handlebars">
  {% raw %}
    {{#view App.MyView}}
      <h1>Hello world!</h1>
    {{/view}}
  {% endraw %}
</script>

Mise à jour

Comme raw est obsolète, utilisez verbatim à la place.

25voto

Ferid Mövsümov Points 1903

{% raw %} déprécié

{% verbatim %}
    <ul>
    {% for item in seq %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
{% endverbatim %}

Source : http://twig.sensiolabs.org/doc/tags/verbatim.html

1voto

phpnederland.nl Points 126

Pour les plus gros blocs de modèles, je suggérerais de déplacer ces modèles script dans un ou plusieurs fichiers séparés (où je suppose qu'ils devraient être pour rendre le tout plus structuré).

Puis rendez les modèles dans votre twig en utilisant la commande source {{ source('uploadables-js.html') }} (IMPORTANT, pas de 'use' ou 'include').

0voto

Robert Brisita Points 557

Pour ne pas encombrer les modèles avec des balises brutes ou verbatim, on peut modifier lexar pour ne pas entrer en conflit avec les moteurs de modèles côté client :

...
$lexer_options = [
  'tag_variable' => ['{~', '~}'],
];
$lexer = new Twig_Lexer($twig, $lexer_options);
$twig->setLexer($lexer);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X