私は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_by
datepublish
{% 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 %}