2014-10-03 3 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) - FitoCategory의 모든 하위 항목이있는 ID가 DataList 인 것을 반환합니다.

$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; 
}