是否有我可以添加到循环中的所有选项的列表?
我不知道 options 是否是它的正确名称。我是说这些
<% loop Dataobject.Reverse %>
<% loop Dataobject.Limit() %>
有人可以告诉我这里可能发生的一切吗?它的正确名称是什么?
最佳答案
你的问题有错误,是<% loop $DataList.xxx %>
或 <% loop $ArrayList.xxx %>
(看,你正在循环一个数据对象列表)
嗯,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 )
意思是:
- 它是公开的(所以它的可访问的、私有(private)的或 protected 将不会在模板中可用)
- 返回ArrayList
- 名字是
limit
- 参数是一个数字长度和一个数字偏移量
所以你可以这样做:<% loop $List.limit(10,5) %>
进一步阅读:
该列表中的一些方法没有显示参数但实际上有它们,这是因为它们是动态的并且 API 文档无法显示它们。
例子:
public ArrayList filter( )
可以这样使用(我想,没试过):
<% loop $List.filter('Name', 'Zauberfisch') %>
您还可以通过创建 Extension
添加自己的方法并将此扩展添加到 DataList
和 ArrayList
关于php - SilverStripe 3 - <% loop %> 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584466/