Странно, сделал как вы. Вот функция, в ней вызов вашей функции:
$listResultCategories['list'] = $this->getCategories(0);
Ваша функция:
private function getCategories($parent_id, $level = 0) {
$level++;
$data = array();
$results = $this->model_lena_pillars_main->getCategories($parent_id);
foreach ($results as $result) {
$data[] = array(
'id' => $result['category_id'],
'name' => $result['name'],
'lvl' => $level,
'type' => 'category',
"typeName"=>"Категория",
'image'=> 'null',
'miniDesc'=>'',
'sort' => $result['sort_order'],
'items' => (isset($children) & !empty($children)) ? $children : array()
);
/*
$children = $this->getCategories($result['category_id'], $level);
if ($children) {
$data = array_merge($data, $children);
}*/
}
return $data;
}
На выходе:
list: [{id: "20", name: "Desktops", lvl: 1, type: "category", typeName: "Категория", image: "null",…},…]
0: {id: "20", name: "Desktops", lvl: 1, type: "category", typeName: "Категория", image: "null",…}
1: {id: "18", name: "Laptops & Notebooks", lvl: 1, type: "category", typeName: "Категория",…}
2: {id: "25", name: "Components", lvl: 1, type: "category", typeName: "Категория", image: "null",…}
3: {id: "57", name: "Tablets", lvl: 1, type: "category", typeName: "Категория", image: "null",…}
4: {id: "17", name: "Software", lvl: 1, type: "category", typeName: "Категория", image: "null",…}
5: {id: "24", name: "Phones & PDAs", lvl: 1, type: "category", typeName: "Категория", image: "null",…}
6: {id: "33", name: "Cameras", lvl: 1, type: "category", typeName: "Категория", image: "null",…}
7: {id: "34", name: "MP3 Players", lvl: 1, type: "category", typeName: "Категория", image: "null",…}
title: "Категории"
type: "category"
Если раскоментировать:
/*
$children = $this->getCategories($result['category_id'], $level);
if ($children) {
$data = array_merge($data, $children);
}*/
то выводятся и другие уровни, но не внутри родителей.
Версия OC2++