【问题标题】:Symfony2, how create a widget like a standalone classSymfony2,如何创建一个像独立类一样的小部件
【发布时间】:2013-07-12 01:06:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: symfony widget


    【解决方案1】:

    Symfony 不提供这样的功能,但是您可以自己制作。它们的实现方式很少。

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

    1 - 可扩展的方式

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

    2 - 包含一个模板

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

    3 - 通过自定义 TwigExtension 渲染

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

    结论

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

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

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

    就个人而言,我会一直尝试使用第一种解决方案,并尝试以某种方式提高性能。自上一版 Symfony2 以来,Twig 中的渲染调用得到了显着改进。

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

    【讨论】:

    • 你忘记了 TwigExtension。那可以用作小部件。拥有自己的控制器和访问服务容器等。
    • TwigExtension 的使用实际上是我的第三点。我会更新我的答案。顺便说一句,你可以验证我的答案,因为它实际上是一个完整且有效的答案。
    猜你喜欢
    • 2013-12-06
    • 2012-08-27
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多