模板组件

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

模板组件

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

它提供了一个基础架构来加载模板文件,并可选地监视它们的更改。它还使用PHP提供了一个具体的模板引擎实现,并提供了用于转义和将模板分离为块和布局的附加工具。

安装

你可以用两种不同的方式安装组件:

使用

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

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

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

请注意

模板将缓存在引擎的内存中。这意味着如果您在同一个请求中多次呈现同一个模板,那么该模板将只从文件系统加载一次。

美元的观点变量

类解析的所有模板中PhpEngine,您可以访问一个神秘的变量称为美元的观点.那个变量保存了当前的数据PhpEngine实例。这意味着您可以访问一堆让您的生活更轻松的方法。

包括模板

共享模板代码片段的最佳方式是创建一个模板,然后其他模板可以包含该模板。随着美元的观点的实例PhpEngine,你可以使用渲染方法(最初用于呈现模板)在模板中呈现另一个模板:

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

全局变量

有时,您需要设置一个变量,该变量在引擎渲染的所有模板中都可用(如美元的应用变量时使用Symfony框架)。ob娱乐下载属性可以设置这些变量addGlobal ()方法,它们可以在模板中作为普通变量访问:

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

在模板中:

1
<p>谷歌跟踪码为:<?php回声ga_tracking? >p>

谨慎

不能调用全局变量视图,因为它们已经被PHP引擎使用了。

请注意

模板中同名的局部变量可以覆盖全局变量。

输出逃离

在呈现变量时,可能应该转义它们,这样HTML或JavaScript代码就不会写入页面。这将防止XSS攻击。要做到这一点,请使用escape ()方法:

1
<?php回声视图->逃避(firstname? >

默认情况下,escape ()方法假设变量是在HTML上下文中输出的。第二个参数允许您更改上下文。例如,要在JavaScript中输出一些内容,可以使用js背景:

1
<?php回声视图->逃避(varjs的? >

该组件附带一个HTML和JS逃逸器。方法注册您自己的逃脱器setEscaper ()方法:

1 2 3 4 5
模板->setEscaper (“css”函数价值/ /……所有CSS转义返回escapedValue;});

助手

模板组件可以很容易地通过助手进行扩展。helper是PHP对象,提供在模板上下文中有用的特性。该组件有2个内置的helper:

在使用这些帮助程序之前,您需要使用注册它们设置()

1 2 3 4
使用ob娱乐下载组件模板助手AssetsHelper/ /……模板->集(AssetsHelper ());

定制的助手

您可以通过创建实现的类来创建自己的helperHelperInterface.然而,大多数情况下您将进行扩展助手

助手有一个必需的方法:getName ().类的帮助程序使用的名称美元的观点对象。

创建自定义引擎

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

使用多种引擎

可以同时使用多个引擎DelegatingEngine类。这个类接受一个引擎列表,并像普通的模板引擎一样工作。唯一的区别是它将调用委托给另一个引擎。要选择用于模板的选项,请使用EngineInterface:支持()方法。

1 2 3 4 5 6 7 8
使用Acme模板CustomEngine使用ob娱乐下载组件模板PhpEngine使用ob娱乐下载组件模板DelegatingEngine模板DelegatingEngine (数组PhpEngine(……)CustomEngine (...), ));
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。