inv*_*tus 4 php loops silverstripe
是否有我可以添加到循环中的所有选项的列表?
我不知道选项是否正确.我是说这些
<% loop Dataobject.Reverse %>
<% loop Dataobject.Limit() %>
Run Code Online (Sandbox Code Playgroud)
有人能告诉我一切可能吗?它的正确名称是什么?
您的问题中存在错误,它是<% loop $DataList.xxx %>或 <% loop $ArrayList.xxx %>(请参阅,您正在循环DataObjects列表)
好吧,loop基本上只是一个foreach循环
所以,例如:
<% loop $DataList.Reverse %>$Title<% end_loop %>
Run Code Online (Sandbox Code Playgroud)
有点像:
<?php
foreach($dataList->reverse() as $item) {
echo $item->Title;
}
Run Code Online (Sandbox Code Playgroud)
'kindof'相同,因为实际上模板会为你做一些检查和转换(例如,如果没有设置Title,它不会抛出并出错),并且循环只能循环SilverStripe列表,而不是数组
TL;博士;/结论
loop
您所说的所有选项都没有选项是您要循环的列表中存在的方法.2列出了你通常会循环的php类:
请参阅API文档中的方法列表,了解可用的方法.
显然并非所有方法都用于循环,
只有那些返回DataList或ArrayList将有用的方法.
你可以看到他们从表格的第一列返回的内容.
例如:
public ArrayList limit( integer $length, integer $offset = 0 )
Run Code Online (Sandbox Code Playgroud)
手段:
limit所以你可以这样做: <% loop $List.limit(10,5) %>
进一步阅读:
该列表中的某些方法不显示参数但实际上确实存在参数,这是因为它们是动态的,并且API文档无法显示.
例:
public ArrayList filter( )
Run Code Online (Sandbox Code Playgroud)
可以像这样使用(我想,从未尝试过):
<% loop $List.filter('Name', 'Zauberfisch') %>
Run Code Online (Sandbox Code Playgroud)
您还可以通过创建Extension并将此扩展添加到DataList和来添加自己的方法ArrayList