1

私はbolt.cmというフレームワークを使用しています。サイレックスに基づく単純なフレームワーク。特定の contenttype のレコードを取得する twig 関数があります。

{% setcontent products = 'products' %}

レコードを取得して特定のフィールドで並べ替えるには:

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

上記は、datepublish フィールドで並べ替えられたレコードをフェッチします。ここで、GET パラメーターから orderby フィールドを渡したいと思いました。変数として定義された、コントローラーから渡されたグローバル twig 変数に GET パラメーターを格納しsort_byます。

{{ sort_by }}

上記は、sort_by 値を html に出力します。ページ内:値を次の/products?sort_by=datepublishように設定します。次に、この変数を次のように setcontent 関数に結合します。sort_bydatepublish

{% 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

どのバージョンのボルトを使用していますか? これは、バージョン 1.6 以降で可能になるはずです。リリースノートには次のように書かれています。

次のように、{% setcontent %} タグで変数を使用できるようになりました: {% setcontent mypages = 'pages' order my_var limit other_var %}.

于 2014-08-13T07:15:39.643 に答える