我正在使用一个名为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 %}
答案 0 :(得分:1)
您使用的是哪个版本的Bolt?从版本1.6开始,这应该是可能的。发行说明说:
您现在可以在{%setcontent%}标记中使用变量,例如:{%setcontent mypages ='pages'order my_var limit other_var%}。