【发布时间】:2018-03-15 01:43:00
【问题描述】:
使用 .html.twig 和 .twig 有什么区别?是否有某种标准,是特定于框架的,还是只是用户偏好?
【问题讨论】:
使用 .html.twig 和 .twig 有什么区别?是否有某种标准,是特定于框架的,还是只是用户偏好?
【问题讨论】:
在 Symfony 下,您可以自动提供不同的格式。因此,您可以创建像 test.json.twig、test.xml.twig 这样的文件。如果您在控制器中定义所有这些扩展,您可以在一个操作中交付所有这些格式。
例如:
/**
* @Route("/hello/{name}.{_format}", defaults={"_format"="html"}, name="_demo_hello")
* @Template()
*/
public function helloAction($name) {
return array('name' => $name);
}
类似的东西。因此,您可以使用路由中的格式来定义响应格式。
【讨论】:
“这只是一种组织策略,用于在需要将相同资源呈现为 HTML (index.html.twig)、XML (index.xml.twig) 或任何其他格式的情况下使用。”
听起来这是用户偏好,但无论哪种方式都是一个很好的标准。
【讨论】:
唯一的区别是自动转义的行为。
假设您有一个 var 变量,其中包含:<div>I'm happy</div>。
在index.twig 上,{{ var }} 将呈现<div>I'm happy</div>。
在index.html.twig 上,{{ var }} 将呈现&lt;div&gt;I&#039;m happy&lt;div&gt;
在index.js.twig 上,{{ var }} 将呈现\x3Cdiv\x3EI\x27m\x20happy\x3Cdiv\x3E
等等。
始终使用正确的扩展来避免任何 XSS 漏洞,并始终明智地使用 |raw,因为它与此扩展的隐式保护重叠。
【讨论】: