Web*_*lka 2 loops datalist silverstripe
我正在尝试使用子DataList创建一个DataList,用于模板中循环内的循环:
public function getAllCategoriesAndEntrys(){
$categories = FitoCategory::get();
foreach ($categories as $category) {
$category->entries = $this->Items($category->ID);
}
return $categories;
}
Run Code Online (Sandbox Code Playgroud)
我的模板看起来像这样:
<% loop getAllCategoriesAndEntrys() %>
$ID $Title <br>
<% loop entries %>
------ $Title <br>
<% end_loop %>
<% end_loop %>
Run Code Online (Sandbox Code Playgroud)
在我的例子中,我确信:
FitoCategory::get()- 返回对象类型中的所有'FitoCategory' DataList;
$this->Items($category->ID)- DataList按ID 返回FitoCategory的所有子条目;
我需要一个绑定代码:
$category->entries = $this->Items($category->ID);
Run Code Online (Sandbox Code Playgroud)
小智 6
目前,查询运行不会被缓存,因此FitoCategory每次循环遍历列表时都会创建新对象.这意味着任何其他属性都会丢失.
相反,您希望将对象添加到a ArrayList并返回该对象.
public function getAllCategoriesAndEntrys(){
$categories = FitoCategory::get();
$list = ArrayList::create();
foreach ($categories as $category) {
$category->entries = $this->Items($category->ID);
$list->push($category);
}
return $list;
}
Run Code Online (Sandbox Code Playgroud)