【问题标题】:Is there a difference in using .html.twig vs .twig使用 .html.twig 和 .twig 有区别吗
【发布时间】:2018-03-15 01:43:00
【问题描述】:

使用 .html.twig 和 .twig 有什么区别?是否有某种标准,是特定于框架的,还是只是用户偏好?

【问题讨论】:

    标签: php symfony twig slim


    【解决方案1】:

    在 Symfony 下,您可以自动提供不同的格式。因此,您可以创建像 test.json.twigtest.xml.twig 这样的文件。如果您在控制器中定义所有这些扩展,您可以在一个操作中交付所有这些格式。

    例如:

    /**
     * @Route("/hello/{name}.{_format}", defaults={"_format"="html"}, name="_demo_hello")
     * @Template()
     */
    public function helloAction($name) {
        return array('name' => $name);
    }
    

    类似的东西。因此,您可以使用路由中的格式来定义响应格式。

    【讨论】:

    • 因此,如果您将 twig 放入一个纤薄的应用程序中,或者只是使用 twig api,那么使用 .html.twig 没有任何优势?
    • 这是使用树枝模板和格式的常用方法。所以你应该使用它。对于程序员来说,查看文件的格式非常好。但如何使用它是您的选择。所以我更喜欢在文件名中使用格式。
    【解决方案2】:

    根据Symfony Documentation

    “这只是一种组织策略,用于在需要将相同资源呈现为 HTML (index.html.twig)、XML (index.xml.twig) 或任何其他格式的情况下使用。”

    听起来这是用户偏好,但无论哪种方式都是一个很好的标准。

    【讨论】:

      【解决方案3】:

      唯一的区别是自动转义的行为。

      假设您有一个 var 变量,其中包含:<div>I'm happy</div>

      index.twig 上,{{ var }} 将呈现<div>I'm happy</div>

      index.html.twig 上,{{ var }} 将呈现<div>I'm happy<div>

      index.js.twig 上,{{ var }} 将呈现\x3Cdiv\x3EI\x27m\x20happy\x3Cdiv\x3E

      等等。

      始终使用正确的扩展来避免任何 XSS 漏洞,并始终明智地使用 |raw,因为它与此扩展的隐式保护重叠。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 2022-02-04
        • 2011-02-03
        相关资源
        最近更新 更多