Я пытаюсь сгенерировать динамическую карту сайта для моего проекта laravel.
Я бы хотел перебрать коллекцию маршрутов и сгенерировать вложенную структуру UL / LI для всех маршрутов.
В настоящее время я выполняю следующие виды работ:
Контроллер:
$routeCollection = Route::getRoutes();
$mainRoutes = [];
$allRoutes = [];
foreach ($routeCollection as $value) {
if (!in_array($value->uri(), $allRoutes)) {
array_push($allRoutes, $value->uri());
}
$url = explode('/', $value->uri());
if (!in_array($url[0], $mainRoutes)) {
array_push($mainRoutes, $url[0]);
}
}
Blade:
<ul>
@foreach($mainRoutes as $main_route)
<li>{{$main_route}}
<ul>
<?php
foreach ($allRoutes as $route)
{
$url = explode('/', $route);
if ($main_route == $url[0])
{
?><li>{{url($route)}}</li><?php
}
}
?>
</ul>
</li>
@endforeach
</ul>
Проблема здесь в том, что я предполагаю, что глубина составляет всего один ($ mainRoutes), поэтому вложенные пути просто появляются под первым вложенным UL.
В идеале выходные данные будут выглядеть примерно так:
URL-адреса:
//foo
//foo/bar
//foo/biz/bang
//foo/biz/bing
//foo/bee/beep/bop
//foo/bee/beep/blop
Список:
-Foo
--Bar
--Biz
---Bang
---Bing
--Bee
---Beep
----Bop
----Blop
... и возможность обрабатывать любой уровень вложенности.