如何在 Laravel 中获取已注册的路由路径列表?
laravelphpserver side programming更新于 2025/4/29 22:37:17
所有路由都存储在 routes/ 文件夹中。如果打开 routes/web.php,您将看到为您的应用程序定义的路由列表。如果要使用路由,则需要包含以下类 -
use Illuminate\Support\Facades\Route;
安装 laravel 时,会默认添加 routes/web.php 文件以及上述类。
这是一条基本路由,当您点击 URL http://localhost:8000/ 时会调用它。它被称为默认路由。点击 URL 时会调用 view('test')。
use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('test'); });
让我们了解如何获取已注册的所有路由列表。
示例 1
(使用 artisan 命令)
获取应用程序中使用的所有路由的命令是−
php artisan route:list
输出
上述代码的输出是 −
C:\xampp\htdocs\laraveltest>php artisan route:list +--------+----------+---------------------+------+-------------------------------------------------------------+------------------------------------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+---------------------+------+-------------------------------------------------------------+------------------------------------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api | | | | | | | App\Http\Middleware\Authenticate:sanctum | | | GET|HEAD | sanctum/csrf-cookie | | Laravel\Sanctum\Http\Controllers\CsrfCookieController@show | web | | | GET|HEAD | test | | App\Http\Controllers\StudentController@index | web | | | GET|HEAD | testarray | | App\Http\Controllers\testuserip@index | web | | | GET|HEAD | users | | App\Http\Controllers\UserController@index | web | | | GET|HEAD | validation | | App\Http\Controllers\testvalidationController@showform | web | | | POST | validation | | App\Http\Controllers\testvalidationController@validateform | web | +--------+----------+---------------------+------+-------------------------------------------------------------+------------------------------------------+
使用 route:list,每个路由可用的中间件也会显示出来。如果要避免显示中间件路由,可以按照以下示例操作。
示例 2
避免在路由列表中使用中间件
跳过路由列表中的中间件路由的命令如下 −
php artisan route:list -v
输出
上面的输出是 −
C:\xampp\htdocs\laraveltest>php artisan route:list -v +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api | | | | | | | App\Http\Middleware\Authenticate:sanctum | | | GET|HEAD | routes | | Closure | web | | | GET|HEAD | sanctum/csrf-cookie | | Laravel\Sanctum\Http\Controllers\CsrfCookieController@show | web | | | GET|HEAD | test | | App\Http\Controllers\StudentController@index | web | | | GET|HEAD | testarray | | App\Http\Controllers\testuserip@index | web | | | GET|HEAD | users | | App\Http\Controllers\UserController@index | web | | | GET|HEAD | validation | | App\Http\Controllers\testvalidationController@showform | web | | | POST | validation | | App\Http\Controllers\testvalidationController@validateform | web | +--------+----------+---------------------+------+------------------------------------------------------------+------------------------------------------+ C:\xampp\htdocs\laraveltest>
示例 3
使用 getRoutes() 方法
要使用方法 getRoutes(),您需要包含 Route 类 −
use Illuminate\Routing\Router;
使用 getRoutes() 您将获得一个 RouteCollection。需要循环获取所有路线的列表。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Routing\Router; class testuserip extends Controller { public function index(Router $route) { $r = $route->getRoutes(); foreach ($r as $value) { echo $value->uri(); echo "<br/>"; } } }
输出
The output of the above code is as follows −
_ignition/health-check
_ignition/execute-solution
_ignition/share-report
_ignition/scripts/{script}
_ignition/styles/{style} sanctum/csrf-cookie
api/user
/
testarray
test
users
validation
validation
示例 4
通过使用 web.php 中的 Route 类来使用 getRoutes()。getRoutes() 将返回包含所有路线列表的 routeCollection。
use Illuminate\Support\Facades\Route; Route::get('/routes', function() { $routeCollection = Route::getRoutes(); foreach ($routeCollection as $value) { echo $value->getActionName(); echo "<br/>"; } });
输出
上述代码的输出是 −
Facade\Ignition\Http\Controllers\HealthCheckController Facade\Ignition\Http\Controllers\ExecuteSolutionController Facade\Ignition\Http\Controllers\ShareReportController Facade\Ignition\Http\Controllers\ScriptController Facade\Ignition\Http\Controllers\StyleController Laravel\Sanctum\Http\Controllers\CsrfCookieController@show Closure Closure App\Http\Controllers\testuserip@index App\Http\Controllers\StudentController@index App\Http\Controllers\UserController@index App\Http\Controllers\testvalidationController@showform App\Http\Controllers\testvalidationController@validateform Closure

