从laravel路由集合生成嵌套的UL / LI

时间:2018-09-13 13:58:34

标签: php arrays laravel laravel-5 routes

我正在尝试为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

...并且能够处理任何级别的嵌套。

0 个答案:

没有答案