我有演出的日期。主页上会显示这些的简短列表。如何将其编码为仅显示当前和未来的显示日期而忽略过去的日期?
我找到了这个例子,但到目前为止还没有工作,所以我可能没有正确应用它。 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'
答案 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()
的方法处理此类逻辑,该方法将返回许多对象(动态或静态限制),这些对象的日期为或在此之后。
希望有所帮助:)