Подтвердить что ты не робот

Отображение зарегистрированных маршрутов в Ларавеле

В этом скринкасте: https://tutsplus.com/lesson/displaying-registered-routes/ Джеффри Уэй демонстрирует созданную им команду и ссылки на github в описании. Однако есть обновление, чтобы сказать, что теперь оно запекается в ядре Laravel 4, однако я искал его безрезультатно.

Общая идея заключается в том, что перечислены все маршруты и действие привязывается к ним.

Любая помощь будет оценена.

4b9b3361

Ответ 1

Вероятно, вы все еще используете старую версию бета-версии L4. Если вы загрузите новую копию, вы увидите ее, когда вы запустите php artisan.

Ответ 2

Команда консоли:

php artisan routes (laravel 4)
php artisan route:list (laravel 5)


+--------+----------------------------------------------------+-----------------------+----------------------------------------------+--------------------------------------------------------------------+---------------+
| Domain | URI                                                | Name                  | Action                                       | Before Filters                                                     | After Filters |
+--------+----------------------------------------------------+-----------------------+----------------------------------------------+--------------------------------------------------------------------+---------------+
|        | GET /admin/configuration                           |                       | [email protected]                | auth, keyMaster:configuration                                      |               |
|        | POST /admin/configuration                          |                       | [email protected]               | auth, keyMaster:configuration                                      |               |
|        | GET /admin/logs/errors                             |                       | [email protected]                        | auth, keyMaster:logs/errors                                        |               |
|        | GET /admin/logs/errors/{name}                      |                       | [email protected]                        | auth, keyMaster:logs/errors                                        |               |
|        | DELETE /admin/logs/errors                          |                       | [email protected]                        | auth, keyMaster:logs/errors                                        |               |
|        | GET /admin/logs/events                             |                       | [email protected]                        | auth, keyMaster:logs/events                                        |               |
|        | GET /admin/logs/events/data                        |                       | [email protected]                    | auth, keyMaster:logs/events                                        |               |

и т.д...

Ответ 3

Я создал маршрут, который будет перечислять каждый маршрут и его соответствующие данные в таблице html.

Route::get('routes', function() {
    $routeCollection = Route::getRoutes();

    echo "<table style='width:100%'>";
    echo "<tr>";
        echo "<td width='10%'><h4>HTTP Method</h4></td>";
        echo "<td width='10%'><h4>Route</h4></td>";
        echo "<td width='80%'><h4>Corresponding Action</h4></td>";
    echo "</tr>";
    foreach ($routeCollection as $value) {
        echo "<tr>";
            echo "<td>" . $value->getMethods()[0] . "</td>";
            echo "<td>" . $value->getPath() . "</td>";
            echo "<td>" . $value->getActionName() . "</td>";
        echo "</tr>";
    }
    echo "</table>";
});

Ответ 4

Вы можете использовать мою библиотеку: asvae/laravel-api-tester:

Laravel api tester


Чтобы показать все маршруты в консоли в Laravel 5 + сделать:

php artisan route:list

Ответ 5

Для команды Lavarel 5 и 5+:

php artisan route:list

Для нижней версии Lavarel (ниже Lavarel 5) это будет:

php artisan routes

Ответ 6

Я не знаю, может ли это быть полезным или нет, но я просто поделюсь этим здесь.

Вы можете использовать эту команду в терминале, чтобы найти общее количество зарегистрированных маршрутов в Laravel.

php artisan route:list | wc -l

Ответ 7

ON laravel 5.6 или новее, основываясь на ответе jeanfrg, используйте это:

Route::get('routes', function() {
    $routeCollection = Route::getRoutes(); 

    echo "<table style='width:100%'>";
    echo "<tr>";
        echo "<td width='10%'><h4>HTTP Method</h4></td>";
        echo "<td width='10%'><h4>Route</h4></td>";
        echo "<td width='80%'><h4>Corresponding Action</h4></td>";
    echo "</tr>";
    foreach ($routeCollection as $value) {
        echo "<tr>";
            echo "<td>" . $value->methods()[0] . "</td>";
            echo "<td>" . $value->uri() . "</td>";
            echo "<td>" . $value->getActionName() . "</td>";
        echo "</tr>";
    }
    echo "</table>";
});

Ответ 8

Вы можете использовать функцию ниже для Laravel 5.8

$routes = collect(\Route::getRoutes())
                    ->map(function ($route) { 
                            return  array(
                                            'domain' => $route->domain(),
                                            'method' => implode('|', $route->methods()),
                                            'uri'    => $route->uri(),
                                            'name'   => $route->getName(),
                                            'action' => ltrim($route->getActionName(), '\\'),
                                            'middleware' => collect($route->gatherMiddleware())
                                                            ->map(function ($middleware) {
                                                                return $middleware instanceof Closure ? 'Closure' : $middleware;
                                                            })->implode(','),
                                        ); 
                        });

Пожалуйста, проверьте ссылку ниже:

https://github.com/laravel/framework/blob/5.8/src/Illuminate/Foundation/Console/RouteListCommand.php

ИЛИ

Вы можете использовать следующий код:

foreach (\Route::getRoutes()->getRoutes() as $route)
        {
            $action = $route->getAction();
            $uri = $route->uri();

            if (array_key_exists('controller', $action))
            {               
                // You can also use explode('@', $action['controller']); here
                // to separate the class name from the method

                if(isset($action['as']) && !empty($action['as'])){

                    $controller = explode("@",str_replace($action['namespace']."\\","",$action['controller']));

                    $controllers[$controller[0]][$action['as']] = array('router_group' => $action['middleware'], 'function' => $controller[1], 'uri' => $uri);
                }
            }
        }

Ответ 9

Обновление для Laravel 5.4

Route::get('routes', function() {
    $routeCollection = Route::getRoutes();
    echo "<table style='width:100%'>";
    echo "<tr>";
        echo "<td width='10%'><h4>HTTP Method</h4></td>";
        echo "<td width='10%'><h4>Route</h4></td>";
        echo "<td width='80%'><h4>Corresponding Action</h4></td>";
    echo "</tr>";
    foreach ($routeCollection as $value) {
        echo "<tr>";
            echo "<td>" . $value->methods()[0] . "</td>";
            echo "<td>" . $value->uri() . "</td>";
            echo "<td>" . $value->getActionName() . "</td>";
        echo "</tr>";
    }
    echo "</table>";
});