首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SilverStripe添加到DataList子DataList

SilverStripe添加到DataList子DataList
EN

Stack Overflow用户
提问于 2014-10-03 15:57:12
回答 1查看 2K关注 0票数 2

我试图为模板中的循环中的一个循环创建一个带有子DataList的DataList:

代码语言:javascript
复制
public function getAllCategoriesAndEntrys(){
    $categories = FitoCategory::get();

    foreach ($categories as $category) {
        $category->entries = $this->Items($category->ID);
    }

    return $categories;
}

我的模板如下所示:

代码语言:javascript
复制
<% loop getAllCategoriesAndEntrys() %>
    $ID $Title <br>
    <% loop entries %>
        ------ $Title <br>
    <% end_loop %>
<% end_loop %>

在我的例子中,我确信:

FitoCategory::get() -返回对象类型DataList中的所有'FitoCategory‘;

$this->Items($category->ID) -返回DataList和FitoCategory的所有子条目;

我需要一个绑定代码来代替:

代码语言:javascript
复制
$category->entries = $this->Items($category->ID);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-03 18:48:17

目前,查询运行没有缓存,所以每次遍历列表时都会创建新的FitoCategory对象。这意味着任何其他属性都会丢失。

相反,您希望将对象添加到ArrayList并返回该对象。

代码语言:javascript
复制
public function getAllCategoriesAndEntrys(){
    $categories = FitoCategory::get();
    $list = ArrayList::create();

    foreach ($categories as $category) {
        $category->entries = $this->Items($category->ID);
        $list->push($category);
    }

    return $list;
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26182482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档