bigfork / supergroupedlist
扩展了 SilverStripe 的 GroupedList,支持遍历关系
1.0.0
2015-06-09 14:10 UTC
Requires
- silverstripe/framework: ^3.1
This package is auto-updated.
Last update: 2024-09-04 22:12:36 UTC
README
扩展了 SilverStripe 的 GroupedList,支持遍历关系。
注意:根据您的数据,相同的条目可能会多次输出。例如,如果一个产品属于多个类别,并且您按类别标题分组,那么该产品将显示在每个它所属的类别下。
安装
composer require bigfork/supergroupedlist ^1.0
或者下载并解压到您文档根目录下名为 supergroupedlist
的文件夹中。
用法
直接使用与 GroupedList
一样的方式,但使用点符号来遍历关系
public function GroupedProducts() { $products = Product::get(); return SuperGroupedList::create($products); }
<% loop $GroupedProducts.GroupedBy('Categories.Title') %> <h1>{$Title}</h1><!-- Category title --> <ul> <% loop $Children %> <li>{$Title}</li><!-- Product title --> <% end_loop %> </ul> <% end_loop %>
您可以使用点符号遍历 has_one
、has_many
和 many_many
关系。您提供的表示法中的最后一部分(如上例中的 Title
)将同时是提取自最终组件的字段,以及用于在循环内访问该字段的 $Variable
。
您甚至可以一次遍历多个关系。例如,$GroupedProducts.GroupedBy('Manufacturer.Employees.FavouriteTeam.Name')
将返回一个按产品制造商的员工最喜欢的团队名称分组的产品的列表。