Для создания меню vue в октябре у меня есть плагин, который я хочу извлечь структуру октябрьских страниц в данные JSON, сохраняя отступы страниц и подстраниц.
На основе этого сообщения: Как получить раскрывающееся меню stati c страницы в OctoberCMS с деревом страниц?
Я использовал следующий код:
public function boot() {
\RainLab\Pages\Classes\Page::extend(function($model) {
$model->addDynamicMethod('getPageOptions', function() {
$theme = \Cms\Classes\Theme::getEditTheme();
$pageList = new \RainLab\Pages\Classes\PageList($theme);
$treePageList = $pageList->getPageTree(true);
$pages = [];
$this->getRecursivePage($pages, $treePageList);
return $pages;
});
});
}
public function getRecursivePage(&$pages, $subpages, $level = 0) {
$level++;
foreach($subpages as $pageArr) {
$pages[$pageArr->page->url] =
str_repeat('-',$level) . ' ' . $pageArr->page->title;
if(count($pageArr->subpages) > 0) {
$this->getRecursivePage($pages, $pageArr->subpages, $level);
}
}
}
, но возвращенный $ treePageList тоже rich для этой цели, а $ pages сглаживает отступ.
Как я могу манипулировать возвращенной структурой JSON, чтобы упростить ее, используя только page-> url и page-> title и сохраняя отступы страниц и подстраниц ?
Спасибо за помощь
РЕДАКТИРОВАТЬ:
Этот код с уровнем $ дает:
array:9 [▼
"/content" => "- Content"
"/content/pages" => "-- Static Pages"
"/content/content" => "-- Content"
"/content/models" => "-- Models"
"/content/urls" => "-- URLs"
"/content/urls/tesets" => "--- tesets"
"/test-sp" => "- test-sp"
"/test-sp/oks" => "-- oks"
"/test" => "- test"
]
, но я бы хотел JSON данные с такими уровнями (не визуализация сырых данных):
▼ 0
page {title: , url:}
subpages []
▼ 1
page {title: , url:}
subpages
▼ 0 {title: , url:}
▼ 1 {title: , url:}
▼ 2 {title: , url:}
▼ 3 {title: , url:}
▼ 4 {title: , url:}
▼ 5 {title: , url:}
▼ 6 {title: , url:}
▼ 7 {title: , url:}
▼ 8 {title: , url:}
▼ 2
page {title: , url:}
subpages
▼ 0 {title: , url:}
▼ 1 {title: , url:}
▼ 2 {title: , url:}