模板引擎(或“服务”)是预先配置的自动Symfony2内部工作。欧宝娱乐app下载地址当然,它可以进一步在应用程序配置文件中配置:
几个配置选项是可用的<一个href=”//www.oldmanjams.com/doc/2.1/reference/configuration/framework.html" class="reference internal">配置附录一个>。
请注意
的嫩枝
引擎是强制性使用webprofiler(以及许多第三方包)。
当AcmeBlogBundle:博客:index.html.twig
呈现,Symfony2实际欧宝娱乐app下载地址上看起来在两个不同位置的模板:
app /资源/ AcmeBlogBundle /视图/博客/ index.html.twig
src / Acme / BlogBundle /资源/视图/博客/ index.html.twig
覆盖包模板,只是复制index.html.twig
模板从包app /资源/ AcmeBlogBundle /视图/博客/ index.html.twig
(应用程序/资源/ AcmeBlogBundle
目录不存在,所以你需要创建它)。你现在可以自由定制模板。
谨慎
如果你在一个新的位置添加一个模板,你可能需要明确你的缓存(php应用程序/控制台缓存:清楚
),即使你在调试模式下。
这个逻辑也适用于基础包模板。还假设每个模板AcmeBlogBundle
继承自一个基础模板AcmeBlogBundle: layout.html.twig
。正如之前,Symfony2将在以欧宝娱乐app下载地址下两个地方的模板:
应用程序/资源/ AcmeBlogBundle /视图/ layout.html.twig
src / Acme / BlogBundle /资源/视图/ layout.html.twig
再一次覆盖模板,复制它的包应用程序/资源/ AcmeBlogBundle /视图/ layout.html.twig
。你现在可以自由定制这个副本。
如果你后退一步,你会发现Symfony2总是看开始的欧宝娱乐app下载地址app /资源/ {BUNDLE_NAME} /视图/
目录模板。如果模板不存在,继续通过检查在资源/观点
包本身的目录。这意味着所有包模板可以被放置在正确的app /资源
子目录。
请注意
你也可以从内部覆盖模板包通过包继承。有关更多信息,请参见<一个href=”//www.oldmanjams.com/doc/2.1/cookbook/bundles/inheritance.html" class="reference internal">如何使用包继承覆盖的部分包吗一个>。
为每个页面创建个人模板,使每个扩展适当的部分模板。例如,“指数”页面将被称为接近AcmeBlogBundle:博客:index.html.twig
和实际的博客文章列表。
注意,这个模板扩展部分模板(AcmeBlogBundle: layout.html.twig
),循序扩展了基本应用程序布局(::base.html.twig
)。这是常见的三级继承模型。
在构建应用程序时,您可以选择遵循这个方法或简单地使每个页面模板(如直接扩展了基本应用程序模板。{%:base.html延伸”。嫩枝' %}
)。three-template模型是一种最佳实践方法供应商所使用的包,包的基本模板可以很容易地覆盖到适当的扩展应用程序的基本布局。
没有任何输出逃跑,结果模板将导致一个JavaScript警告框弹出:
虽然这似乎是无害的,如果用户可以得到这么远,相同的用户还应该能够编写JavaScript执行恶意操作的安全区域内的一个不知名的,合法的用户。
这个问题的答案是转义输出。输出逃离,相同的模板显示无害,打印脚本
标记在屏幕上:
嫩枝和PHP模板系统以不同的方式处理这个问题。如果你用树枝、输出逃离在默认情况下,你的保护。在PHP中,输出逃避并不是自动进行的,这意味着您将需要手动在必要时逃脱。
您还可以禁用逃离在输出{%块%}
区域或整个模板。有关更多信息,请参见<一个href=”http://twig.sensiolabs.org/doc/api.html" class="reference external" rel="external noopener noreferrer" target="_blank">输出逃离一个>树枝的文档。欧宝体育电话
默认情况下,escape ()
方法假设变量被呈现在一个HTML上下文(因此变量是逃到安全的HTML)。第二个参数可以改变环境。例如,输出在一个JavaScript字符串,使用js
背景:
如果树枝的变量才会倾倒调试
设置(在config.yml
)是真正的
。默认情况下,这意味着将倾倒的变量dev
环境而不是刺激
环境。
你可以检查语法错误在树枝的模板使用枝:线头
控制台命令:
的getRequestFormat
在请求
默认为对象html
,但可以返回任何其他格式根据用户所请求的格式。请求格式通常是由路由,路由可以配置,这样的地方/联系
设置请求格式html
而/ contact.xml
设置格式xml
。有关更多信息,请参见<一个href=”//www.oldmanjams.com/doc/2.1/book/routing.html" class="reference internal">先进的路由章例子一个>。
创建链接,包括格式参数,包括一个_format
关键参数的散列:
欧宝娱乐app下载地址Symfony的模板引擎是非常灵活的和两个不同的模板默认渲染器是可用的:传统的PHP模板和光滑的和强大的嫩枝模板。支持模板的层次结构和封装在一组丰富的辅助函数执行最常见任务的能力。
总的来说,模板的主题应该被认为是一个强大的工具,在你的处置。在某些情况下,您可能不需要呈现一个模板,在Symfony2,那绝对是好。欧宝娱乐app下载地址