模板组件
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
< /div>模板组件
模板组件提供了所需的所有工具构建任何类型的模板系统。
它提供了一个基础设施来加载模板文件和可选地监控他们的变化。它还提供了一种混凝土模板引擎使用PHP实现额外的工具来逃避和分离成块模板和布局。
< /blockquote>安装
1
美元作曲家需要symfony /模板:ob娱乐下载^ 3.4
请注意
如果你安装这个组件之外的Symfony应用程序,你必须要求ob娱乐下载
< /div>供应商/ autoload.php
文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。使用
另请参阅
这篇文章解释了如何使用模板功能作为一个独立的组件在任何PHP应用程序。读了创建和使用模板了解如何使用模板条Symfony应用程序。ob娱乐下载
< /div>的PhpEngine类是组件的入口点。它需要一个模板名称解析器(TemplateNameParserInterface)模板名称转换为模板引用(TemplateReferenceInterface)。它还需要一个模板加载程序(LoaderInterface)使用模板引用来查找和加载模板:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\模板\加载程序\FilesystemLoader;使用ob娱乐下载\组件\模板\PhpEngine;使用ob娱乐下载\组件\模板\TemplateNameParser;美元filesystemLoader=新FilesystemLoader (__DIR__。' /视图/ %名称% ');美元模板=新PhpEngine (新TemplateNameParser (),美元filesystemLoader);回声美元模板- >呈现(“hello.php”,(“firstname”= >“法”]);
1 2
< !——视图/你好。php - - >你好,< ?=美元firstname? >!
的呈现()方法解析
视图/ hello.php
文件并返回输出文本。第二个参数的渲染
是一个数组变量的模板中使用。在本例中,结果将是你好,法比安!
。请注意
模板将被缓存的内存引擎。这意味着,如果你多次呈现相同的模板相同的请求,模板只能从文件系统加载一次。
< /div>的
美元的观点
变量在所有模板的解析
< /div>PhpEngine
,你得到一个神秘的变量美元的观点
。该变量保存当前PhpEngine
实例。这意味着你获得一些方法,使你的生活更容易。包括模板
分享模板代码的一个片段的最好办法是创建一个模板,可以包括其他模板。随着
美元的观点
变量的一个实例PhpEngine
,你可以使用呈现()
方法(最初用于呈现模板)在模板来呈现另一个模板:1 2 3 4
< ? php美元的名字= (“法”,……)? >< ? phpforeach(美元的名字作为美元的名字):? >< ?=美元视图- >呈现(“hello.php”,(“firstname”= >美元的名字])? >< ? phpendforeach? >
全局变量
有时,您需要设置一个变量由一个可用在所有模板渲染引擎(如
美元的应用
变量在使用Symfony框架)。ob娱乐下载这些变量可以设置使用addGlobal ()方法,他们可以在模板正常访问变量:1
美元模板- >addGlobal (“ga_tracking”,“UA-xxxxx-x”);
在一个模板:
1
<p>谷歌的跟踪代码是:< ?=美元ga_tracking? >< /p>
谨慎
全局变量不能被称为
< /div>这
或视图
,因为他们已经由PHP引擎使用。请注意
可以被一个局部变量覆盖全局变量名称相同的模板中。
< /div>输出逃离
呈现变量时,你应该摆脱这样HTML或JavaScript代码不写入页面。这将防止XSS攻击。要做到这一点,使用escape ()方法:
1
< ?=美元视图- >逃避(美元firstname)? >
默认情况下,
escape ()
方法假设变量输出在一个HTML上下文。第二个参数可以改变环境。例如,输出JavaScript内的东西,使用js
背景:1
< ?=美元视图- >逃避(美元var,js的)? >
组件有一个HTML和JS逃脱者。你可以注册自己的排放器使用setEscaper ()方法:
1 2 3 4 5
美元模板- >setEscaper (“css”,函数(美元价值){/ /……所有CSS逃离返回美元escapedValue;});
助手
模板组件通过助手可以扩展。助手是PHP对象,在模板上下文提供有用的特性。组件有一个内置的助手:
您可以使用这些助手之前,您需要注册使用设置():
1 2 3 4
使用ob娱乐下载\组件\模板\助手\SlotsHelper;/ /……美元模板- >集(新SlotsHelper ());
定制的助手
您可以创建自己的助手通过创建一个实现类HelperInterface。然而,大部分的时间你会延长助手。
的
< /div>助手
需要有一个方法:getName ()。这个名字是用来辅助的美元的观点
对象。创建一个自定义引擎
除了提供一个PHP模板引擎,您还可以使用模板创建自己的引擎组件。为此,创建一个新类,它实现了EngineInterface。这需要三个方法:
- 呈现($名称、数组$参数= [])——显示一个模板
- 存在(名称)-检查模板是否存在
- 支持(名称)——检查给定的模板可以由这台发动机。
使用多个引擎
可以使用多个引擎同时使用DelegatingEngine类。这门课需要一个列表的引擎和行为就像一个正常的模板引擎。唯一的区别是,它代表调用另一个引擎。为模板,选择使用哪一个EngineInterface:支持()使用方法:
1 2 3 4 5 6 7 8
使用Acme\模板\CustomEngine;使用ob娱乐下载\组件\模板\DelegatingEngine;使用ob娱乐下载\组件\模板\PhpEngine;美元模板=新DelegatingEngine ([新PhpEngine (……)新CustomEngine (…)));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。