在bolt.cm中的setcontent内传递变量值

时间:2014-03-10 05:38:25

标签: twig silex bolt-cms

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

{% setcontent products = 'products' %}

要获取记录并按特定字段对其进行排序:

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

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

{{ sort_by }}

上面会将sort_by值打印成html。在页面中:/products?sort_by=datepublish会将sort_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 %}

1 个答案:

答案 0 :(得分:1)

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

  

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