php - SilverStripe 3 - <% loop %> 选项

标签 php loops silverstripe

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

我不知道 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 添加自己的方法并将此扩展添加到 DataListArrayList

关于php - SilverStripe 3 - <% loop %> 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20584466/

相关文章:

php - 验证可能不存在的字段

php - 在 Laravel 7x 上找不到特征 'Illuminate\Foundation\Auth\AuthenticatesUsers'

c# - While or and not 等于不工作?

silverstripe - 如何向通过 ModelAdmin 管理的模型添加描述?

silverstripe - 如何保存输入到 ListBoxField 中的多个值并循环遍历值?

php - Silverstripe:将 URL 变量传递给表单操作

c# - 在c#中使用公钥加密数据,在php中使用私钥解密数据

php - 调整大小然后裁剪 PHP

excel - 复制工作表 1 中的范围并粘贴到循环中下一张工作表的下一个空行

c - C 中的 while 循环无论条件如何都会执行