arrays - route - ¿Cómo obtener una lista de rutas de ruta registradas en Laravel?
rutas y controladores en laravel (9)
Esperaba encontrar una forma de crear una matriz con las rutas de rutas registradas dentro de Laravel 4.
Esencialmente, estoy buscando obtener una lista como esta:
/
/login
/join
/password
Me encontré con un método Route::getRoutes()
que devuelve un objeto con la información de las rutas, así como los recursos, pero la información de la ruta está protegida y no tengo acceso directo a la información.
¿Hay alguna otra forma de lograr esto? Tal vez un método diferente?
Comando de consola para quienes usan Oh-my-zsh con el complemento Laravel 5
la5routes
Creé una ruta que listará cada ruta y sus respectivos detalles en una tabla 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=''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>";
});
Para Laravel 5, puedes usar el comando artesanal
php artisan route:list
lugar de php artisan routes
.
Puede usar el comando de la consola:
php artisan routes
Ayudantes:
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.
Una mejor forma de hacerlo legible es registrar una ruta e imprimirla en el navegador web con la salida artesanal directamente
Route::get(''routes'', function() {
/Artisan::call(''route:list'');
return /Artisan::output();
});
si compiló rutas como / login / {id} y solo quiere el prefijo:
foreach (Route::getRoutes() as $route) {
$compiled = $route->getCompiled();
if(!is_null($compiled))
{
var_dump($compiled->getStaticPrefix());
}
}
Route::getRoutes()
devuelve un RouteCollection
. En cada elemento, puede hacer un simple $route->getPath()
para obtener la ruta de acceso de la ruta actual.
Cada parámetro protegido se puede obtener con un getter estándar.
Looping funciona así:
$routeCollection = Route::getRoutes();
foreach ($routeCollection as $value) {
echo $value->getPath();
}
$routeList = Route::getRoutes();
foreach ($routeList as $value)
{
echo $value->uri().''<br>'';
}
use Illuminate / Support / Facades / Route;
En Laravel 5.4, funciona, 100%
//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>