1

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

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

简单示例“我想使用小部件创建菜单导航,它将按用户角色构造 html”。

4

1 回答 1

8

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

我承认我们正在谈论可以做后端工作的小部件(即从数据库获取数据、调用 API 等)。

1 - 可扩展的方式

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

2 - 包括一个模板

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

3 - 通过自定义 TwigExtension 渲染

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

结论

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

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

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

就个人而言,我将始终尝试使用第一个解决方案并尝试以一种或另一种方式提高性能。自 Symfony2 的最后一个版本以来,Twig 中的渲染调用得到了显着改进。

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

于 2013-07-14T05:25:10.490 回答