Ответ 1
Вероятно, вы все еще используете старую версию бета-версии L4. Если вы загрузите новую копию, вы увидите ее, когда вы запустите php artisan
.
В этом скринкасте: https://tutsplus.com/lesson/displaying-registered-routes/ Джеффри Уэй демонстрирует созданную им команду и ссылки на github в описании. Однако есть обновление, чтобы сказать, что теперь оно запекается в ядре Laravel 4, однако я искал его безрезультатно.
Общая идея заключается в том, что перечислены все маршруты и действие привязывается к ним.
Любая помощь будет оценена.
Вероятно, вы все еще используете старую версию бета-версии L4. Если вы загрузите новую копию, вы увидите ее, когда вы запустите php artisan
.
Команда консоли:
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 | |
и т.д...
Я создал маршрут, который будет перечислять каждый маршрут и его соответствующие данные в таблице 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>";
});
Вы можете использовать мою библиотеку: asvae/laravel-api-tester:
Чтобы показать все маршруты в консоли в Laravel 5 + сделать:
php artisan route:list
Для команды Lavarel 5 и 5+:
php artisan route:list
Для нижней версии Lavarel (ниже Lavarel 5) это будет:
php artisan routes
Я не знаю, может ли это быть полезным или нет, но я просто поделюсь этим здесь.
Вы можете использовать эту команду в терминале, чтобы найти общее количество зарегистрированных маршрутов в Laravel.
php artisan route:list | wc -l
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>";
});
Вы можете использовать функцию ниже для 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);
}
}
}
Обновление для 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>";
});