loops - SilverStripe 添加到 DataList 子 DataList

标签 loops datalist silverstripe

我正在尝试为模板中循环内的循环创建一个带有子 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,其中包含 FitoCategory 的所有子条目(按 ID);

我需要一个绑定(bind)代码:

$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/

相关文章:

Javascript:乘法持久性问题建议的解决方案执行超时

c# - ASP 复选框的 'checked' 属性总是返回 false

asp.net - 在数据列表中的两列之间放置固定空间

php - 汇总字段中的 $many_many 关系

php - Silverstripe 在模板内循环 has_many

SilverStripe 检查是否正在编辑或添加记录?

r - R中的两个相互依赖的for循环,奇怪的结果

python - 计算包含范围内所有值的函数?

java - 如何删除链表中的第一个节点?

Javascript:根据输入匹配数据列表选项