2014-10-03 76 views
1

我試圖創建一個孩子的DataList 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() - 返回對象類型中所有我的'FitoCategory'DataList ;

$this->Items($category->ID) - 返回DataList與ID爲FitoCategory所有子項;

我需要,而不是綁定代碼:

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

回答

5

目前,查詢運行沒有緩存,以便新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; 
}