【发布时间】:2014-01-02 06:46:24
【问题描述】:
是否有我可以添加到循环中的所有选项的列表?
我不知道选项是否是正确的名称。我是说这些
<% loop Dataobject.Reverse %>
<% loop Dataobject.Limit() %>
谁能告诉我这里可能发生的一切?它的正确名称是什么?
【问题讨论】:
标签: php loops silverstripe
是否有我可以添加到循环中的所有选项的列表?
我不知道选项是否是正确的名称。我是说这些
<% loop Dataobject.Reverse %>
<% loop Dataobject.Limit() %>
谁能告诉我这里可能发生的一切?它的正确名称是什么?
【问题讨论】:
标签: php loops silverstripe
您的问题中有一个错误,它是 <% 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 文档中的方法列表以了解可用的方法。
显然并非所有方法都用于循环,
只有那些返回 DataList 或 ArrayList 的才会有用。
您可以看到它们从表格的第一列返回。
例如:
public ArrayList limit( integer $length, integer $offset = 0 )
意思是:
limit
所以你可以这样做:<% loop $List.limit(10,5) %>
进一步阅读:
该列表中的某些方法不显示参数,但实际上有参数,这是因为它们是动态的,API 文档无法显示。
示例:
public ArrayList filter( )
可以这样使用(我想,没试过):
<% loop $List.filter('Name', 'Zauberfisch') %>
您还可以通过创建Extension 并将此扩展添加到DataList 和ArrayList 来添加自己的方法
【讨论】:
<% loop $List.LIMIT(10,5) %> 也可以。