1

我正在使用一个名为 bolt.cm 的框架。一个基于silex的简单框架。有一个 twig 函数可以获取特定内容类型的记录:

{% setcontent products = 'products' %}

获取记录并按特定字段排序:

{% setcontent products = 'products' orderby 'datepublish' %}

上面将获取按 datepublish 字段排序的记录。现在,我想从 GET 参数中传递 orderby 字段。我将 GET 参数存储在从控制器传递的全局 twig 变量中,定义为sort_by变量。

{{ sort_by }}

上面会将 sort_by 值打印到 html 中。在页面中:/products?sort_by=datepublishsort_by值设置为datepublish现在我将将此变量组合到 setcontent 函数中,如下所述:

{% setcontent products = 'products' orderby sort_by %}

现在我收到错误:

An exception has been thrown during the compilation of a template ("Attribute "value" does not exist for Node "Twig_Node_Expression_Name".") in "products.twig".

我的问题很简单,如何使 sort_by 被识别为该函数中的一个值?请不要告诉我这样做:

{% if sort_by == 'datepublish' %}
  {% setcontent products = 'products' orderby 'datepublish' %}
{% elseif sort_by == 'another_field' %}
  {% setcontent products = 'products' orderby 'another_field' %}

{# and so on for every single field #}

{% endif %}
4

1 回答 1

2

您使用的是哪个版本的 Bolt?从 1.6 版开始,这应该是可能的。发行说明说:

您现在可以在 {% setcontent %} 标签中使用变量,如下所示:{% setcontent mypages = 'pages' order my_var limit other_var %}。

于 2014-08-13T07:15:39.643 回答