gpt4 book ai didi

templates - 如何在 Symfony2/Twig 模板中包含原始 HTML 文件?

转载 作者:行者123 更新时间:2023-12-04 02:44:13 24 4
gpt4 key购买 nike

我正在 Symfony2 中处理一个项目,我有几个小的 html 需要包含在我的一个主要 View 中。根据官方的 Twig 文档,我应该可以简单地使用 {% include 'filename.html' %}但是在 Symfony 中,除非文件名以“.html.twig”结尾,否则它会抛出错误并说它找不到文件。我想避免对这些文件使用 Twig 模板,因为它们没有动态内容和大量双括号(它们是 javascript 模板),并且要求模板设计者必须将这些文件中的每一个都包装在 {% raw %} 中。标签似乎是一种非常笨拙的方式来做到这一点。

最佳答案

快速回顾一下 twig 文件扩展名(取自文档):

Every template name also has two extensions that specify the format and engine for that template.


AcmeBlogBundle:Blog:index.html.twig - HTML format, Twig engine
AcmeBlogBundle:Blog:index.html.php - HTML format, PHP engine
AcmeBlogBundle:Blog:index.css.twig - CSS format, Twig engine

By default, any Symfony2 template can be written in either Twig or PHP, and the last part of the extension (e.g. .twig or .php) specifies which of these two engines should be used. The first part of the extension, (e.g. .html, .css, etc) is the final format that the template will generate.



因此,即使没有抛出错误,将文件包含为 .html 也至少是模棱两可的。

所以你有3个选择:
  • 如果文件是纯 javascript,则将它们作为脚本标签包含在您的页面中。
  • 如果它们混合了 HTML 和 JS,则使用 {% raw %} 转义 JS 并将文件包含为 foo.html.twig 模板。如果像这样包含了很多脚本,那么很可能您的设计师可以进行一些重构并将其大部分脚本移动到外部文件(请参阅选项 1)
  • 如果你真的坚持,你总是可以编写一个 Twig 扩展来包含原始 HTML 文件。 (编辑:有关此选项的更多详细信息,请参阅下面的@Haprog 答案)。

    {{ include_html('foo/bar.html') }}
  • 2015 年更新 twig 已经添加了源函数:
  • {{ source('AcmeSomeBundle:Default:somefile.html.twig') }}
    在下面对选项 4 的评论中感谢@Nigel Angel。

    关于templates - 如何在 Symfony2/Twig 模板中包含原始 HTML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664643/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com