新在Symfoob娱乐下载ny 2.2:新片段sub-framework
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
大约一个月前,我合并的完整重构子请求,Symfony的管理。ob娱乐下载事实上,我创建了一个全新的sub-framework处理资源的呈现片段通过不同的策略:
- 现在的代码的一部分HttpKernel组件(而不是FrameworkBundle)。外面容易使代码可重用Symfony的完整框架(像在硅石,Drupal,或Laravel);ob娱乐下载
- 更多的解耦代码不依赖于依赖注入或路由组件了;
- 现在的代码是可扩展的,允许创建新的渲染策略和集成在几分钟内(如SSI支持,应该在Symfony 2.3);ob娱乐下载
- 我们不再创建的代码现在快子请求,当处理一个ESI / HInclude(而不是两个在Symfony 2.0和2.1);ob娱乐下载
- 但更重要的是,广泛使用的应急服务国际公司或HIncludes有趣又没有专门的路线需要创建(又让Drupal快乐!)。
除了古典大师请求,HttpKernel组件现在可以处理一些子请求。让我总结可用不同的策略:内部一些子请求,esi, HIncludes, ssi (2.3)。但是如何选择一个吗?
首先,即使所有子请求,最终由Symfony,他们处理请求/响应生命周期的不同阶段:ob娱乐下载
- 内部子请求,:由Symfony直接处理;ob娱乐下载
- SSIs:处理web服务器(Apache, Nginx,…);
- 应急服务国际公司:由一个反向代理处理(清漆,…);
- HInclude:处理一个web浏览器。
然后,根据您的架构(你有一个反向代理吗?您的web服务器是否支持SSIs ?),一些选项为您的项目可能不可用;但他们其他差异,可以帮助你让你的选择:
- HIncludes是唯一一些子请求的处理客户端(一些JavaScript的帮助下),所有其他的处理策略服务器端:HIncludes招致几个服务器和客户端之间的往返而其他策略只涉及一个往返;
- 内部子请求,不需要任何特定的配置或软件,他们的盒子;
- 应急服务国际公司和HIncludes允许您设置特定的缓存策略sub-responses;别人不喜欢。
我不会谈论内部代码,你可能从来没有处理它,但让我告诉你如何使用新代码;首先,我们今天仍然(2.2)工作:
1 2 3 4 5 6 7 8
{#内部通过常规的URL sub-request #}{%渲染url (route_name) %}通过常规的URL #{#一个ESI标签}{%渲染url (route_name,{独立:“应急服务国际公司”})%}通过常规的URL #{#一个HInclude标签}{%渲染url (route_name,{独立:“hinclude”}) %}
第一个变化是一个新的的可用性呈现()
函数,它以同样的方式工作的标签(目前弃用):
1 2 3 4 5 6 7 8
{#内部通过常规的URL sub-request #}{{渲染(url (route_name))}}通过常规的URL #{#一个ESI标签}{{渲染(url (route_name,{独立:“应急服务国际公司”}))}}通过常规的URL #{#一个HInclude标签}{{渲染(url (route_name,{独立:“hinclude”}))}}
的独立的
选项创建一次,唯一的选择真正的
或假
我们只支持ESI一些子请求。但是现在可以使用更多的选项,这个选项已经被重命名为策略
:
1 2 3 4 5 6 7 8
{#内部通过常规的URL sub-request #}{{渲染(url (route_name))}}通过常规的URL #{#一个ESI标签}{{渲染(url (route_name,{策略:“应急服务国际公司”}))}}通过常规的URL #{#一个HInclude标签}{{渲染(url (route_name,{策略:“hinclude”}))}}
的引入渲染
功能还允许一些不错的语法糖,打电话比以前短:
1 2 3 4 5 6 7 8
{#内部通过常规的URL sub-request #}{{渲染(url (route_name))}}通过常规的URL #{#一个ESI标签}{{render_esi (url (route_name))}}通过常规的URL #{#一个HInclude标签}{{render_hinclude (url (route_name))}}
正如您可以看到的,这使得事情更短更一致。您可能还注意到,即使是内部子请求,我们使用的url。这是因为前一段时间,我们修正了重大安全问题在Symfony内部线路保护方式(内部路线主要是用于处理ESI和HInclude标记)ob娱乐下载。那时,我们宣布2.2 Symfony将不再支持内部线路,所有应急ob娱乐下载服务国际公司和HInclude标签必须通过创建适当的配置路线……事实上这是我们所做的,这就是我刚才使用的例子。当然,被迫为每个ESI或HInclude标签创建一个特定的路线非常繁琐(尤其是如果你严重依赖他们);所以,现在有一个更好的办法:
1 2 3 4 5 6 7 8
{#通过控制器内部sub-request #}{{渲染(控制器(“包:控制器:行动”))}}{#一个ESI标签通过控制器#}{{render_esi(控制器(“包:控制器:行动”))}}{#一个HInclude标签通过控制器#}{{render_hinclude(控制器(“包:控制器:行动”))}}
但是我刚刚说使用一个内部路线(一个控制器应该使用)是不安全的,对吧?是的,但是我们不依赖内部路线了。子请求,现在被一个侦听器(才能启动路由)当你使用控制器。这是一个实现细节,但它意味着我们现在可以正确地获得这些调用自动为你(我们使用的URL签名和IP检查根据正在使用的策略)。
使用正确的url可能是一个不错的选择对于HIncludes和控制器可能是更好的为esi和内部子请求,…但这取决于你。
这是新的片段sub-framework的力量!我希望你欣赏新的API的简单性和一切为您自动获得的事实。
2.2项目转向Symfony什么!ob娱乐下载
这一切看起来很棒!