web-dev-qa-db-ja.com

Laravelに登録されたルートパスのリストを取得する方法は?

私はLaravel 4。

本質的に、私はこのようなリストが返されるのを探しています:

_/
/login
/join
/password
_

ルート情報とリソースを含むオブジェクトを返すメソッドRoute::getRoutes()に出会いましたが、パス情報は保護されており、情報に直接アクセスすることはできません。

これを達成する他の方法はありますか?おそらく別の方法ですか?

56
Kevin Jung

Route::getRoutes()RouteCollectionを返します。各要素で、単純な$route->getPath()を実行して、現在のルートのパスを取得できます。

保護された各パラメーターは、標準のゲッターで取得できます。

ループは次のように機能します。

$routeCollection = Route::getRoutes();

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

コンソールコマンドを使用できます。

Laravel 4質問されたとおり

php artisan routes

Laravel 5より実際的な

php artisan route:list


ヘルパー(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.
45
rinomau

Laravel 5の場合、artisanコマンドを使用できます

php artisan route:list の代わりに php artisan routes

28
berkayk

各ルートとその詳細を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>";
});
18
jeanfrg
//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>
8
Carlos Andrade

読みやすくするためのより良い方法は、ルートを登録し、直接職人の出力でウェブブラウザに印刷することです

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

コード

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

職人

ララベル4

php artisan routes

ララヴェル5

php artisan route:list
3
pablorsk
     $routeList = Route::getRoutes();

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

illuminate\Support\Facades\Routeを使用します。

Laravel 5.4、それは動作します、100%

3
Turan Zamanlı

/ login/{id}のようなルートをコンパイルしていて、プレフィックスのみが必要な場合:

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

これできれいな配列になった、試してみてください

$routeCollection = json_decode(json_encode(Route::getRoutes()->get(),true),true);
dd($routeCollection);

たとえば、すべての登録済みのルート名のみが必要な場合、次のように取得できます。

foreach ($routeCollection as $key => $value) {
     if(array_key_exists('as',$value['action'])){
        dump($value['action']['as']);
   }
}
1
Vipertecpro

Oh-my-zshLaravel 5プラグイン を使用する場合のコンソールコマンド

la5routes
0
Ilyich

For Laravel 5.4。*このコードは正常に動作します。

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>";
});
0
Afraz Ahmad