我正在尝试为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]);
}
}
刀片:
<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
...并且能够处理任何级别的嵌套。