Silverstripe 3.5.1/PHP - 在 GroupedList 循环中减去 1 年

Silverstripe 3.5.1/PHP - Subtract 1 year within GroupedList loop

我在 SilverStripe 网站上有一个页面,它使用 GroupedList 功能按年份列出了毕业生组:

这是 GroupedList 函数:

 public function getGroupedMembers() {
   $groupedList = GroupedList::create(
       Member::get()
           ->filter("IsCurrent", False)
           ->sort("GraduationYear", "DESC")
   );
   return $groupedList;
 }

以及它在模板上的呈现方式:

<% loop $getGroupedMembers.GroupedBy(GraduationYear) %>
    <div class="row">
        <h3>$GraduationYearRange</h3>
        <% loop $Children %>
            <div class="col-xs-6 col-sm-6 col-md-4 col-lg-3 members-list">
                <p class="member-name">$Name</p><br/>
            </div>
        <% end_loop %>
    </div>
<% end_loop %>

等等。但是,我想显示开始和毕业年份,所以我有 2015-2016、2014-2015、2013-2014 等等。我创建了一个名为 getGraduationYearRange 的函数,它位于我的 Member 数据对象中 class:

<?php
class Member extends DataObject
{
    private static $db = array(
        'Name'      => 'Varchar(250)',
        'IsCurrent' => 'Boolean',
        'GraduationYear' => 'varchar(4)',
        'Bio' => 'HTMLText',
    );

    private static $has_one = array(
        'MemberImage' => 'Image',
    );

    public function getCMSFields() {
        $fields = parent::getCMSFields();

        $fields->addFieldToTab("Root.Main", new CheckboxField ("IsCurrent", "Current Member?"), "Bio");
        $fields->addFieldToTab("Root.Main", new TextField("GraduationYear", "Graduation Year", '', 4), "Bio");

        return $fields;
    }

    public function getGraduationYearRange(){
        $startYear = date('Y', strtotime("-1 year", strtotime($this->GraduationYear)));
        $gradYear = $this->GraduationYear;
        echo $gradYear." - ".$startYear;
        return $gradYear." - ".$startYear;
    }

}

class MemberAdmin extends ModelAdmin {
    private static $managed_models = 'Member';
    private static $url_segment = 'Member';
    private static $menu_title = 'Members';
}

getGraduationYearRange 函数似乎不起作用。 return模板中没有任何内容。 echo 语句也没有 return 任何东西。

我想我可能已经解决了!这是我对 getGraduationYearRange 函数所做的更改:

public function getGraduationYearRange(){
   $gradYear = $this->GraduationYear;
   $startYear = $gradYear - 1;
   return $startYear." - ".$gradYear;
}

我也按照 3dgoo 的建议做了,并将 GraduationYearRange 放入 GroupedBy 函数中。这些更改似乎已经解决了问题,因为我现在看到了正确的年份范围。

即 2015-2016、2014-2015、2013-2014 等

谢谢你的帮助,不过 :)