7

私が構築しているこのアプリケーションでは、ユーザーが過去の記録を見ることができるようにしたいと考えています。したがって、そのユーザーが 2005 年までさかのぼるレコードを持っている場合、その年を含むそれ以降の年のリストを表示できるようにしたいと考えています。たとえば、次のようになります。

年のリスト: 2012 | 2011年 | 2010年 | 2009年 | 2008年 | 2007年 | 2006年 | 2005年

次のように、データベースから最も古いレコードを取得するための SQL を作成しました。

    // Retrieve Oldest Record
    $minimumyear = $dm->createQuery('
    SELECT min(msu.endDate) as msuMin
    FROM InstructorBundle:MapSubscriptions msu 
    LEFT JOIN InstructorBundle:MapContacts mc WHERE msu.contact = mc.id
    LEFT JOIN InstructorBundle:MapFamilies mf WHERE mc.family = mf.id
    WHERE mf.branch = :centre'
    )->setParameter('centre', $centreid);

    $minyear = $minimumyear->getResult();

私が抱えている問題は、最も古い年を取得したことです。Twig を使用して必要なリストを表示する方法がわかりません。これを可能にするためにTwigを拡張することを考えましたが、Twigにこれを可能にする機能がある場合に備えて、当面はその道をたどりたくありません。

Twig を使用して必要なリストを表示するにはどうすればよいですか?

4

1 に答える 1

20

小枝の日付関数を使用して現在の年を取得し"now"、最小年から現在の年までをfor loop でループします

{% set minimumYear = 2010 %}

List of years: {{ minimumYear }}
{% for year in (minimumYear+1).."now"|date("Y") %}
    | {{ year }}
{% endfor %}

出力:

年のリスト: 2010 | 2011年 | 2012年 | 2013年

.. または現在の年を最初に取得する

{% set minimumYear = 2010 %}
{% set currentYear = "now"|date("Y") %}   

List of years: {{ currentYear }}
{% for year in (currentYear-1)..minimumYear %}
   | {{ year }}
{% endfor %}

出力:

年のリスト: 2013 | 2012年 | 2011年 | 2010年

于 2013-09-12T10:04:31.240 に答える