10

Symfony2プロジェクトには、データベースから多数のインシデントを取得するコントローラーがあります。これらのインシデントには、start_time、stop_time、typeなどのプロパティがあります。

私の見解では、これらのインシデントをstart_timeでソートされたテーブルに表示したいと思います。私はテンプレートにTwigを使用しています。

Twigテンプレートに渡す前にコントローラーで事前に並べ替えることはできますが、コントローラーはビューで並べ替えが必要かどうかを気にする必要はありません。たとえば、私が作成する別のテンプレートでは、タイプ別に並べ替える必要があります。

さて、インシデントオブジェクトのコレクションをそのままTwigテンプレートに渡して、その場で並べ替えてもらう方法はありますか?たぶん'| 'フィルターを並べ替えますが、'|のようなものを使用します 私が何を意味するか知っているなら、その前にあるproperty(start_time)'フィルター:-)

アドバイスは大歓迎です、よろしくお願いします!

ディーター

4

2 に答える 2

16

Twigを使用してプロパティで配列を並べ替える方法はありません。sortフィルタはまだありますが(ここで説明:http: //twig.sensiolabs.org/doc/filters/sort.htmlsort )、phpが関数で行うように配列を並べ替えるだけです。

できることは、TwigExtensionを作成し、独自のフィルターを実装することです。これは非常に簡単で、ここに非常によく文書化されています:http: //twig.sensiolabs.org/doc/advanced.html

于 2011-08-26T08:26:46.790 に答える
3

futurecatは完全に正しいです:これをすぐに実行する方法はありません。彼の答えが受け入れられたとしても、完全を期すためにこれを追加します。

snilius / twig-sort-by-field Twig拡張機能を使用できます。これにより、必要なフィルターが提供されます。

を使用してインストールしcomposer require snilius/twig-sort-by-field、そのsortbyfieldフィルターをお楽しみください。

{% for item in base | sortbyfield('name') %}
    {{ item.name }}
{% endfor %}
于 2016-11-06T09:43:12.330 に答える