0

我正在准备一个应用程序,它将为几个不同的站点提供服务,这些站点具有一个共同的管理面板(一个具有不同主题的页面要简化)。

这些“主题”中的每一个都有不同的需求。例如,虽然它们都显示服务列表,但其中一些也会显示相关图像。对于那些不喜欢的人,我宁愿避免使用数据库调用来获取它们(呈现页面的不同逻辑)。

在 Laravel(一个 PHP 框架)中,这将是视图作曲家的完美用途。

这样的系统在围棋中的设计是什么?

我在想某种“钩子”,每个主题都可以注册以运行函数来获取和添加特定模板的数据。有更好的方法吗?

4

1 回答 1

2

如果您将服务对象列表传递给模板,您可以轻松地在模板中决定要显示的内容。如果您决定显示服务的图像,您可以调用ServiceObject.ImageURL()(然后会导致数据库调用)。如果您不调用此函数,则不会发出数据库查询。

使用pongo2模板引擎的示例:

{% for service in services %}
    {% if page.theme == "simple" %}
        <p>We don't show any image in the simple theme.</p>
    {% else %}
        {# This would lead to a database call and return the image path #}
        <img src="{{ service.ImageURL() }}" />
    {% endif %}
{% endfor %}

另一个想法是简单地为每个主题创建一个单独的模板(扩展通用基本模板);你没有检查模板内的主题。

于 2014-08-16T14:02:26.363 回答