如何在Twig模板中使用Mustache?它们都有相同的标记分隔符

  • 本文关键字:分隔符 Twig Mustache twig mustache
  • 更新时间 :
  • 英文 :


我在项目中使用Twig。它使用以下标签:{{ name }}

我想把Mustache也包括在我的项目中。但是Mustache也使用了相同的标签{{ name }},所以存在冲突,什么都不起作用。

Mustache在他们的文档中提供的解决方案当然不起作用。因为我必须在Twig模板中键入Twig分隔符{{才能更改Mustache分隔符。

* {{ default_tags }}
{{=<% %>=}}
* <% erb_style_tags %>
<%={{ }}=%>
* {{ default_tags_again }} 

如何越过它?有没有其他方法可以在设置中的某个地方更改Mustache分隔符?

如果您有一个大模板要通过trick。更好的解决方案是暂时关闭自动转义。

{% verbatim %}
    Everything will be outputted as is in this block
{% endverbatim %}

例如,您可以通过将{{}}替换为[[]]来自定义分支分隔符,使其与Mustache分隔符不同,如twig doc:中所述

$twig = new Twig_Environment();
$lexer = new Twig_Lexer($twig, array(
    'tag_comment'   => array('{#', '#}'),
    'tag_block'     => array('{%', '%}'),
    'tag_variable'  => array('[[', ']]'),
    'interpolation' => array('#{', '}'),
));
$twig->setLexer($lexer);

解决方法是用树枝"回声"双括号

{{ "{{some_js_varaible}}" }}

{{ "{% js_condition %}" }}
'{% verbatim %}
<a href="{{joblink}}" target="_blank">{{{_highlightResult.title.value}}}</a><p>{{description}}</p>
{% endverbatim %}'

说明:

  • {%逐字记录%}告诉tridge不要将{{某些内容}}}}解释为tridge

  • html语法保持不变,如链接

  • 因此,如果您的代码/函数/配置需要Mustache字符串,那么您就有了它:{{Mustache.object.value}}.

来源:

https://github.com/janl/mustache.js/issues/441

在Symfony框架中测试工作。

最新更新