模板

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

模板

当PHP在20年前被创建时,开发人员喜欢它的简单性以及它将HTML和动态代码很好地混合在一起。但随着时间的推移,其他模板语言也一样嫩枝-创建是为了使模板更好。

最佳实践

使用树枝模板格式的模板。

一般来说,PHP模板比Twig模板冗长得多,因为它们缺乏对模板所需的许多现代特性的原生支持,比如继承、自动转义和过滤器和函数的命名参数。

Twig是Symfony中的默认模板格式,在所有非php模板引擎中拥有最大的社区支欧宝娱乐app下载地址持(它被用于Drupal 8等高调的项目中)。欧宝下载链接

另外,Twig是Symfony 3.0中唯一保证支持的模板格式。欧宝娱乐app下载地址事实上,PHP可能会从官方支持的模板引擎中删除。

模板的位置

最佳实践

存储应用程序的所有模板应用程序/资源/视图/目录中。

传统上,Symfony开发人员欧宝娱乐app下载地址将应用程序模板存储在资源/视图/每个bundle的目录。然后他们使用逻辑名称来指代它们(例如:AcmeDemoBundle:默认值:index.html.twig).

但是对于应用程序中使用的模板,将它们存储在应用程序/资源/视图/目录中。对于初学者来说,这大大简化了它们的逻辑名称:

存储在bundle中的模板 存储在app /
AcmeDemoBundle:默认值:index.html.twig 默认的/ index.html.twig
:: layout.html.twig layout.html.twig
AcmeDemoBundle: index.html.twig index.html.twig
AcmeDemoBundle:默认值:子目录/ index.html.twig 默认的/子目录/ index.html.twig
AcmeDemoBundle:默认/子目录:index.html.twig 默认的/子目录/ index.html.twig

另一个优点是集中模板可以简化设计人员的工作。他们不需要在分散在许多bundle中的许多目录中寻找模板。

最佳实践

目录名和模板名使用小写的snake_case。

树枝的扩展

最佳实践

中定义您的Twig扩展AppBundle /理解/目录并使用应用程序/配置/ services.yml文件。

我们的应用程序需要自定义md2html树枝过滤器,这样我们就可以将每个帖子的Markdown内容转换为HTML。

要做到这一点,首先,安装优秀ParsedownMarkdown解析器作为项目的新依赖项:

1
$ composer需要erusev/解析

然后,创建一个新的减价稍后将被树枝扩展使用的服务。服务定义只需要类的路径:

1 2 3 4 5
# app / config / services.yml服务:#……减记:类:AppBundle \跑龙套\减价

减价类只需要定义一个方法来将Markdown内容转换为HTML:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
名称空间AppBundle跑龙套减价私人解析器公共函数__construct()->解析器=\ Parsedown ();}公共函数toHtml文本超文本标记语言->解析器->文本(文本);返回超文本标记语言;}}

接下来,创建一个新的Twig扩展并定义一个名为md2html使用Twig_SimpleFilter类。注入新定义的减价在Twig扩展的构造函数中:

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
名称空间AppBundle嫩枝使用AppBundle跑龙套减价AppExtension扩展Twig_Extension私人解析器公共函数__construct(减价解析器->解析器=解析器;}公共函数getFilters()返回数组\ Twig_SimpleFilter (“md2html”数组“markdownToHtml”),数组“is_safe”= >数组“html”)),);}公共函数markdownToHtml内容返回->解析器->toHtml (内容);}公共函数getName()返回“app_extension”;}}

最后定义一个新的服务来在应用程序中启用这个Twig扩展(服务名称是不相关的,因为你从来没有在你自己的代码中使用它):

1 2 3 4 5 6 7 8
# app / config / services.yml服务:app.twig.app_extension:类:AppBundle \树枝\ AppExtension参数:(“@markdown”)公众:标签:-名称:twig.extension
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。