Symfony2,如何像独立类一样创建一个小部件

时间:2013-07-13 17:47:46

标签: symfony widget

让我们从基本的事情开始,简单的例子是Yii。它有小部件这样的东西。独立,可配置和可从我们想要的类的任何地方调用。我想知道symfony2可以有相同的吗?它会是什么?控制器捆绑?动作简单(方法)?带参数的小工具(树枝)?

在Yii中,我们创建(小部件)类,独立,描述和使用(通过调用模板)。它在symfony2中会是什么样子?

简单示例'我希望使用小部件创建菜单导航,它将按用户角色构建html。

1 个答案:

答案 0 :(得分:8)

Symfony没有提供这样的功能,但您可以自己制作。他们很少有这样做。

我只是承认我们正在讨论可以进行后端工作的小部件(即从数据库获取数据,调用API等)。

1 - 可扩展的方式

使用render tag in Twig,允许您从模板中调用控制器操作。它是可扩展的,因为您可以使用esi tags with Varnish(您也可以实现自己的缓存配置文件)。 作为奖励,探查器将在时间轴中显示有关特定渲染调用的详细信息(它看起来像整个请求的子集)。

2 - 包含模板

包含的模板通过Twig函数调用收集数据。根据经验,它比第一个解决方案快一点,但它不易扩展。

3 - 渲染自定义的TwigExtension

twig函数将获取数据并调用renderView服务的template方法。如果您打算这样做,您可能想要使用第一种方法。

结论

如果你有一个大型网站,其模块/小部件可以获得大量流量(或“点击”):使用第一个解决方案。

如果您的小网站不支持缓存:请使用第二种解决方案。如果模块/小部件超轻,您可以使用此解决方案。

如果您正在考虑第三种解决方案......使用第一种解决方案可能是个好主意。

就个人而言,我总是会尝试使用第一种解决方案并尝试以某种方式提升性能。自从最新版本的Symfony2以来,Twig中的渲染调用得到了显着改善。

希望我的回答能为您提供一些指导。