模板组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 4.1,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

< /div>

模板组件

模板组件提供了所需的所有工具构建任何类型的模板系统。

它提供了一个基础设施来加载模板文件和可选地监控他们的变化。它还提供了一种混凝土模板引擎使用PHP实现额外的工具来逃避和分离成块模板和布局。

< /blockquote>

安装

1
美元作曲家需要symfony /模板欧宝娱乐app下载地址

或者,您可以克隆的https://github.com/欧宝娱乐app下载地址symfony/templating存储库。

请注意

如果你安装这个组件之外的Symfony应用程序,你必须要求欧宝娱乐app下载地址供应商/ autoload.php文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。

< /div>

使用

另请参阅

这篇文章解释了如何使用模板功能作为一个独立的组件在任何PHP应用程序。读了创建和使用模板了解如何使用模板条Symfony应用程序。欧宝娱乐app下载地址

< /div>

PhpEngine类是组件的入口点。它需要一个模板名称解析器(TemplateNameParserInterface)模板名称转换为模板引用(TemplateReferenceInterface)。它还需要一个模板加载程序(LoaderInterface)使用模板引用来查找和加载模板:

1 2 3 4 5 6 7 8 9
使用欧宝娱乐app下载地址\组件\模板\PhpEngine;使用欧宝娱乐app下载地址\组件\模板\TemplateNameParser;使用欧宝娱乐app下载地址\组件\模板\加载程序\FilesystemLoader;美元filesystemLoader=FilesystemLoader (__DIR__' /视图/ %名称% ');美元模板=PhpEngine (TemplateNameParser (),美元filesystemLoader);回声美元模板- >呈现(“hello.php”,(“firstname”= >“法”]);
1 2
< !——视图/你好。php - - >你好,< ?=美元firstname? >!

呈现()方法解析视图/ hello.php文件并返回输出文本。第二个参数的渲染是一个数组变量的模板中使用。在本例中,结果将是你好,法比安!

请注意

模板将被缓存的内存引擎。这意味着,如果你多次呈现相同的模板相同的请求,模板只能从文件系统加载一次。

< /div>

美元的观点变量

在所有模板的解析PhpEngine,你得到一个神秘的变量美元的观点。该变量保存当前PhpEngine实例。这意味着你获得一些方法,使你的生活更容易。

< /div>

包括模板

分享模板代码的一个片段的最好办法是创建一个模板,可以包括其他模板。随着美元的观点变量的一个实例PhpEngine,你可以使用呈现()方法(最初用于呈现模板)在模板来呈现另一个模板:

1 2 3 4
< ? php美元的名字= (“法”,……)? >< ? phpforeach(美元的名字作为美元的名字):? >< ?=美元视图- >呈现(“hello.php”,(“firstname”= >美元的名字])? >< ? phpendforeach? >

全局变量

有时,您需要设置一个变量由一个可用在所有模板渲染引擎(如美元的应用变量在使用Symfony框架)。欧宝娱乐app下载地址这些变量可以设置使用addGlobal ()方法,他们可以在模板正常访问变量:

1
美元模板- >addGlobal (“ga_tracking”,“UA-xxxxx-x”);

在一个模板:

1
<p>谷歌的跟踪代码是:< ?=美元ga_tracking? >< /p>

谨慎

全局变量不能被称为视图,因为他们已经由PHP引擎使用。

< /div>

请注意

可以被一个局部变量覆盖全局变量名称相同的模板中。

< /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
使用欧宝娱乐app下载地址\组件\模板\助手\SlotsHelper;/ /……美元模板- >集(SlotsHelper ());

定制的助手

您可以创建自己的助手通过创建一个实现类HelperInterface。然而,大部分的时间你会延长助手

助手需要有一个方法:getName ()。这个名字是用来辅助的美元的观点对象。

< /div>

创建一个自定义引擎

除了提供一个PHP模板引擎,您还可以使用模板创建自己的引擎组件。为此,创建一个新类,它实现了EngineInterface。这需要三个方法:

使用多个引擎

可以使用多个引擎同时使用DelegatingEngine类。这门课需要一个列表的引擎和行为就像一个正常的模板引擎。唯一的区别是,它代表调用另一个引擎。为模板,选择使用哪一个EngineInterface:支持()使用方法:

1 2 3 4 5 6 7 8
使用Acme\模板\CustomEngine;使用欧宝娱乐app下载地址\组件\模板\PhpEngine;使用欧宝娱乐app下载地址\组件\模板\DelegatingEngine;美元模板=DelegatingEngine ([PhpEngine (……)CustomEngine (…)));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。