【问题标题】:display routes and it's sub routes as a list in laravel在 laravel 中将路线及其子路线显示为列表
【发布时间】:2016-04-11 15:30:40
【问题描述】:

假设我在routes.php 文件中有这些路由定义:

Route::group(
            array (
                'prefix' => 'admin'
            ),
            function () {

                        Route::group(['prefix' => 'user'], function () {
                            Route::get('usersData', ['as' => 'usersData', 'uses' => 'UserController@usersData']);
                            Route::get('getOrgLevelAsJson/{user_id}', ['uses' => 'UserController@getOrgLevelAsJson']);
                        });
                        Route::resource('/user', 'UserController');

                        Route::group(['prefix' => 'role'], function () {
                            Route::get('rolesData', ['as' => 'rolesData', 'uses' => 'RoleController@rolesData']);
                            Route::post('applyPerms', ['as' => 'applyPerms', 'uses' => 'RoleController@applyPerms']);
                        });
                        Route::resource('/role', 'RoleController');

                    }
                );
            }
        );

现在出于某种原因,我想将这些路线及其子路线显示为无序列表,如下所示:

<ul>
    <li>admin/user
        <ul>
            <li>usersData</li>
            <li>getOrgLevelAsJson/{user_id}</li>
            <li>create</li>
            <li>user/{user}</li>
            <li>{user}/edit</li>
        </ul>
    </li>

    <li>admin/role
        <ul>
            <li>applyPerms</li>
            <li>rolesData</li>
            <li>create</li>
            <li>role/{role}</li>
            <li>role/{role}/edit</li>
        </ul>
    </li>
</ul>

我知道可以使用Route::getRoutes() 获取所有已定义的路由,但我不知道如何获取路由然后是子路由。

我正在使用 Laravel 5.2。

【问题讨论】:

    标签: php laravel routes


    【解决方案1】:
     <?php
    $routeCollection = Route::getRoutes();
    $mainRoutes = [];
    $allRoutes = [];
    foreach ($routeCollection as $value) {
        array_push($allRoutes, $value->getPath());
        $url = explode('/', $value->getPath());
        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>
    

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 2018-01-21
      • 2020-02-13
      • 2019-08-14
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      相关资源
      最近更新 更多