如何使用Twig和Symfony2显示特定年份以来的年份列表

时间:2013-09-12 09:30:40

标签: symfony twig

通过这个应用程序,我正在构建我希望用户能够查看前几年的记录。因此,如果该用户的记录可以追溯到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显示我需要的列表?

1 个答案:

答案 0 :(得分:18)

只需使用twig date function即可使用"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