SilverStripe 3.1:仅显示当前或未来日期

时间:2017-08-25 12:51:02

标签: php date silverstripe

我有演出的日期。主页上会显示这些的简短列表。如何将其编码为仅显示当前和未来的显示日期而忽略过去的日期?

我找到了这个例子,但到目前为止还没有工作,所以我可能没有正确应用它。 https://www.silverstripe.org/community/forums/data-model-questions/show/14451 或者有没有办法在模板中执行此操作?

HomePage.ss

<% loop $Projects.limit(1) %>
<% loop $Entrys.limit(10) %>
    <li class="tourdate"><strong>$EntryDate.ShortMonth 
      $EntryDate.DayOfMonth</strong> - $Location</li>
<% end_loop %>
<% end_loop %>

ProjectPage.php

private static $has_many = array(
               'Entrys' => 'Entry'
           );

日期为

的Entry.php
'EntryDate' => ‘Date'

1 个答案:

答案 0 :(得分:2)

您可以使用EntryDate.InPast(),如下所示:

<% loop $Projects.limit(1) %>
    <% loop $Entrys.limit(10) %>
        <% if not EntryDate.InPast() %>
            <li class="tourdate"><strong>$EntryDate.ShortMonth 
                $EntryDate.DayOfMonth</strong> - $Location
            </li>
        <% en_if %>
    <% end_loop %>
<% end_loop %>

我还没有测试过这个具体示例,因此您可能需要稍微调整一下。

此外,我更喜欢在类级别使用类似getUpcomingShows()的方法处理此类逻辑,该方法将返回许多对象(动态或静态限制),这些对象的日期为或在此之后。

希望有所帮助:)