Ich hatte gehofft, einen Weg zu finden, um ein Array mit den registrierten Routenpfaden in Laravel 4 zu erstellen.
Im Wesentlichen suche ich nach einer Liste wie dieser:
/
/login
/join
/password
Ich bin auf eine Methode Route::getRoutes()
gestoßen, die ein Objekt mit den Routeninformationen sowie den Ressourcen zurückgibt, aber die Pfadinformationen sind geschützt und ich habe keinen direkten Zugriff auf die Informationen.
Gibt es einen anderen Weg, um dies zu erreichen? Vielleicht eine andere Methode?
arrays
laravel
laravel-4
laravel-routing
Kevin Jung
quelle
quelle
Antworten:
Route::getRoutes()
gibt a zurückRouteCollection
. Für jedes Element können Sie einfach$route->getPath()
den Pfad der aktuellen Route ermitteln.Jeder geschützte Parameter kann mit einem Standard-Getter abgerufen werden.
Looping funktioniert folgendermaßen:
$routeCollection = Route::getRoutes(); foreach ($routeCollection as $value) { echo $value->getPath(); }
quelle
Collection
GerätArrayAccess
, mit dem sie sich wie Arrays verhalten und in der verwendet werden könnenforeach
.Illuminate\Routing\Router
.$routes = array_map(function (\Illuminate\Routing\Route $route) { return $route->uri; }, (array) Route::getRoutes()->getIterator());
Sie können den Konsolenbefehl verwenden:
php artisan route:list
Helfer (Laravel 4) :
Usage: routes [--name[="..."]] [--path[="..."]] Options: --name Filter the routes by name. --path Filter the routes by path. --help (-h) Display this help message. --quiet (-q) Do not output any message. --verbose (-v|vv|vvv) Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug --version (-V) Display this application version. --ansi Force ANSI output. --no-ansi Disable ANSI output. --no-interaction (-n) Do not ask any interactive question. --env The environment the command should run under.
quelle
php artisan route:list
jetztFür Laravel 5 können Sie den Handwerkerbefehl verwenden
php artisan route:list
stattphp artisan routes
.quelle
Ich habe eine Route erstellt, die jede Route und ihre jeweiligen Details in einer HTML-Tabelle auflistet.
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='10%'><h4>Name</h4></td>"; echo "<td width='70%'><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->getName() . "</td>"; echo "<td>" . $value->getActionName() . "</td>"; echo "</tr>"; } echo "</table>"; });
quelle
//Laravel >= 5.4 //Controller index() $app = app(); $routes = $app->routes->getRoutes(); return view ('Admin::routes.index',compact('routes')); //view <table id="routes-table" class="table table-bordered table-responsive"> <thead> <tr> <th>uri</th> <th>Name</th> <th>Type</th> <th>Method</th> </tr> </thead> <tbody> @foreach ($routes as $route ) <tr> <td>{{$route->uri}}</td> <td>{{$route->getName()}}</td> <td>{{$route->getPrefix()}}</td> <td>{{$route->getActionMethod()}}</td> </tr> @endforeach </tbody> </table>
quelle
getRoutes()
Methode, senden sie dann an dietemplate
und erstellen schließlich eine Normalitäthtml table
mit den Daten, während wir alle durchlaufen. Zum Beispiel sind die Anzeige wir dieuri e.g /home
,name e.g home_route
Ihnen zugeordnet und die anderen.Wenn Sie Routen wie / login / {id} kompiliert haben und nur ein Präfix möchten:
foreach (Route::getRoutes() as $route) { $compiled = $route->getCompiled(); if(!is_null($compiled)) { var_dump($compiled->getStaticPrefix()); } }
quelle
Eine bessere Möglichkeit, sie lesbar zu machen, besteht darin, eine Route zu registrieren und sie im Webbrowser mit der handwerklichen Ausgabe direkt auszudrucken
Route::get('routes', function() { \Artisan::call('route:list'); return \Artisan::output(); });
quelle
return '<pre>' . \Artisan::output() . '</pre>';
besser in, um die Formatierung zu verbessern.api/
\Artisan::call('route:list', ['--path' => 'api']);
Code
Laravel <= 5,3
/** @var \Illuminate\Support\Facades\Route $routes */ $routes = Route::getRoutes(); foreach ($routes as $route) { /** @var \Illuminate\Routing\Route $route */ echo $route->getPath() . PHP_EOL; }
Laravel> = 5,4
/** @var \Illuminate\Support\Facades\Route $routes */ $routes = Route::getRoutes(); foreach ($routes as $route) { /** @var \Illuminate\Routing\Route $route */ echo $route->uri. PHP_EOL; }
Handwerker
Laravel 4
Laravel 5
php artisan route:list
quelle
$routeList = Route::getRoutes(); foreach ($routeList as $value) { echo $value->uri().'<br>'; } use Illuminate\Support\Facades\Route;
Auf Laravel 5.4 funktioniert es zu 100%
quelle
Konsolenbefehl für diejenigen, die Oh-my-zsh mit Laravel 5-Plugin verwenden
quelle
Für Laravel 5.4. * Dieser Code funktioniert einwandfrei.
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='10%'><h4>Name</h4></td>"; echo "<td width='70%'><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->getName() . "</td>"; echo "<td>" . $value->getActionName() . "</td>"; echo "</tr>"; } echo "</table>"; });
quelle
Verbesserung der Antwort von @ jeanfrg
Es hat einige veraltete Funktionen. Es wird ein Fehler beim Bearbeiten einer Antwort angezeigt und daher hier veröffentlicht.
Laravel 6, 7 & 8
Lege es hinein
routes/web.php
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='10%'><h4>Name</h4></td>"; echo "<td width='70%'><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->getName() . "</td>"; echo "<td>" . $value->getActionName() . "</td>"; echo "</tr>"; } echo "</table>"; });
Demo: Zugriff über
<url>/routes
quelle