SilverStripe 3 - <%loop%>的选项

时间:2013-12-14 14:25:40

标签: php loops silverstripe

是否有我可以添加到循环中的所有选项的列表?

我不知道选项是否正确。我的意思是这些

<% loop Dataobject.Reverse %>
<% loop Dataobject.Limit() %>

有人可以告诉我这里可能发生的一切吗?它的正确名称是什么?

1 个答案:

答案 0 :(得分:9)

您的问题中存在错误,它是<% loop $DataList.xxx %><% loop $ArrayList.xxx %>(请参阅,您正在循环使用DataObjects列表)

好吧,loop基本上只是一个foreach循环

所以,例如:

<% loop $DataList.Reverse %>$Title<% end_loop %>

有点像:

<?php 
foreach($dataList->reverse() as $item) { 
    echo $item->Title; 
}

'kindof'相同,因为实际上模板会为你做一些检查和转换(例如,如果未设置Title,它不会抛出并出错),并且循环只能循环SilverStripe列表,而不是数组


TL;博士; /结论

loop根本没有选择权 您所说的选项是您要循环的列表中存在的方法。 2列出了你通常会循环的php类:

请参阅API文档中的方法列表,了解可用的方法。

显然并非所有方法都用于循环,
只有那些返回DataListArrayList的人才会有用 你可以看到他们从表格的第一列返回的内容。

例如:

public ArrayList limit( integer $length, integer $offset = 0 )

表示:

  • 它是公开的(因此其模板中不提供可访问,私有或受保护的)
  • 返回ArrayList
  • 名称为limit
  • 参数是数字长度和数字偏移量

所以你可以这样做:<% loop $List.limit(10,5) %>


进一步阅读:

该列表中的某些方法不显示参数但实际上有这些参数,这是因为它们是动态的,而且API文档无法显示。

示例:

public ArrayList filter( )

可以像这样使用(我想,从未尝试过):

<% loop $List.filter('Name', 'Zauberfisch') %>

您还可以通过创建Extension并将此扩展程序添加到DataListArrayList

来添加您自己的方法