模板组件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.5,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
模板组件
模板组件提供了构建任何类型的模板系统所需的所有工具。
它提供了一个基础架构来加载模板文件,并可选地监视它们的更改。它还使用PHP提供了一个具体的模板引擎实现,并提供了用于转义和将模板分离为块和布局的附加工具。
安装
你可以用两种不同的方式安装组件:
- 通过Composer安装(
ob娱乐下载symfony /模板
在Packagist); - 使用官方Git存储库(https://github.com/ob娱乐下载symfony/Templating).
使用
的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回声$视图->逃避($var,js的)? >
该组件附带一个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种方法:
- 渲染($name, array $parameters = array())-渲染模板
- 存在(名称)—检查模板是否存在
- 支持(名称)-检查给定的模板是否可以被这个引擎处理。
使用多种引擎
可以同时使用多个引擎DelegatingEngine类。这个类接受一个引擎列表,并像普通的模板引擎一样工作。唯一的区别是它将调用委托给另一个引擎。要选择用于模板的选项,请使用EngineInterface:支持()方法。
1 2 3 4 5 6 7 8
使用Acme\模板\CustomEngine;使用ob娱乐下载\组件\模板\PhpEngine;使用ob娱乐下载\组件\模板\DelegatingEngine;$模板=新DelegatingEngine (数组(新PhpEngine(……)新CustomEngine (...), ));