我正在尝试在模板的循环中为子循环创建带有子DataList的DataList:
public function getAllCategoriesAndEntrys(){
$categories = FitoCategory::get();
foreach ($categories as $category) {
$category->entries = $this->Items($category->ID);
}
return $categories;
}
我的模板如下所示:
<% loop getAllCategoriesAndEntrys() %>
$ID $Title <br>
<% loop entries %>
------ $Title <br>
<% end_loop %>
<% end_loop %>
在我的示例中,我确定:
FitoCategory::get()
-返回对象类型为DataList
的所有“ FitoCategory”;$this->Items($category->ID)
-返回DataList
并带有id的FitoCategory的所有子项;我需要绑定代码:
$category->entries = $this->Items($category->ID);
最佳答案
当前,查询运行不会被缓存,因此每次在列表上循环时都会创建新的FitoCategory
对象。这意味着所有其他属性都将丢失。
相反,您想将对象添加到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;
}
关于loops - SilverStripe添加到DataList子DataList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26182482/