【问题标题】:SilverStripe add to DataList child DataListSilverStripe 添加到 DataList 子 DataList
【发布时间】:2014-10-03 15:57:12
【问题描述】:

我正在尝试为模板中的循环内的循环创建带有子 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-&gt;Items($category-&gt;ID) - 返回DataList 以及FitoCategory 的所有子条目(按ID);

我需要一个绑定代码:

$category->entries = $this->Items($category->ID);

【问题讨论】:

    标签: loops datalist silverstripe


    【解决方案1】:

    目前,查询运行没有被缓存,所以每次遍历列表时都会创建新的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;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多