模板
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
模板
当PHP在20年前被创建时,开发人员喜欢它的简单性以及它将HTML和动态代码很好地混合在一起。但随着时间的推移,其他模板语言也一样嫩枝-创建是为了使模板更好。
最佳实践
使用树枝模板格式的模板。
一般来说,PHP模板比Twig模板冗长得多,因为它们缺乏对模板所需的许多现代特性的原生支持,比如继承、自动转义和过滤器和函数的命名参数。
Twig是Symfony中的默认模板格式,在所有非php模板引擎中拥有最大的社区支ob娱乐下载持(它被用于Drupal 8等高调的项目中)。欧宝体育平台怎么样
另外,Twig是Symfony 3.0中唯一保证支持的模板格式。ob娱乐下载事实上,PHP可能会从官方支持的模板引擎中删除。
模板的位置
最佳实践
存储应用程序的所有模板应用程序/资源/视图/
目录中。
传统上,Symfony开发人员ob娱乐下载将应用程序模板存储在资源/视图/
每个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服务:#……app.markdown:类: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参数:(“@app.markdown”)公众:假标签:-{名称:twig.extension}