120 votes

Comment obtenir une liste des chemins d'accès enregistrés dans Laravel ?

J'espérais trouver un moyen de créer un tableau avec les chemins d'accès enregistrés dans Laravel 4.

Essentiellement, je cherche à obtenir une liste semblable à celle-ci :

/
/login
/join
/password

Je suis tombé sur une méthode Route::getRoutes() qui renvoie un objet contenant les informations sur les chemins ainsi que les ressources, mais les informations sur les chemins sont protégées et je n'ai pas d'accès direct à ces informations.

Existe-t-il un autre moyen d'y parvenir ? Peut-être une méthode différente ?

14voto

Carlos Andrade Points 141
//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>

7voto

Jose Palazuelos Points 70

Une meilleure façon de le rendre lisible est d'enregistrer une route et de l'imprimer dans un navigateur web avec la sortie artisanale directement.

Route::get('routes', function() {
     \Artisan::call('route:list');
     return \Artisan::output();
});

5voto

Luis Pozenato Points 41

Si vous avez compilé des routes comme /login/{id} et que vous ne voulez que le préfixe :

foreach (Route::getRoutes() as $route) {
    $compiled = $route->getCompiled();
    if(!is_null($compiled))
    {
        var_dump($compiled->getStaticPrefix());
    }
}

5voto

pablorsk Points 558

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;
}

Artisan

Laravel 4

php artisan routes

Laravel 5

php artisan route:list

3voto

Turan Zamanlı Points 835
$routeList = Route::getRoutes();

foreach ($routeList as $value)
{
    echo $value->uri().'<br>';
}

use Illuminate\Support\Facades\Route;

Sur Laravel 5.4, cela fonctionne, à 100 %.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X