Создать вложенный UL / LI из коллекции маршрутов laravel - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь сгенерировать динамическую карту сайта для моего проекта 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

... и возможность обрабатывать любой уровень вложенности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...