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 ?

148voto

AlexKevler Points 2969

Route::getRoutes() renvoie un RouteCollection . Sur chaque élément, vous pouvez faire un simple $route->getPath() pour obtenir le chemin de l'itinéraire actuel.

Chaque paramètre protégé peut être récupéré avec un getter standard.

Le bouclage fonctionne comme suit :

$routeCollection = Illuminate\Support\Facades\Route::getRoutes();

foreach ($routeCollection as $value) {
    echo $value->getPath();
}

112voto

rinomau Points 807

Vous pouvez utiliser la commande de la console :

Laravel 4 comme demandé dans la question

php artisan routes

Laravel 5 plus réel

php artisan route:list

Aides (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.

36voto

Darshan Gada Points 391

Améliorer la réponse de @jeanfrg

Il a quelques fonctions obsolètes. Il affiche une erreur lors de l'édition d'une réponse, d'où l'affichage ici.

Laravel 6, 7 et 8

Mettez-le à l'intérieur 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>";
});

Démonstration : Accédez-y via <url>/routes

Output demo

33voto

berkayk Points 376

Pour Laravel 5, vous pouvez utiliser la commande artisanale

php artisan route:list au lieu de php artisan routes .

28voto

jeanfrg Points 1421

J'ai créé une route qui répertorie chaque route et ses détails respectifs dans un tableau 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>";
});

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