Laravel에 등록 된 경로 경로 목록을 얻는 방법은 무엇입니까?
Laravel 4 내에서 등록 된 경로 경로로 배열을 만드는 방법을 찾고 싶었습니다.
기본적으로 다음과 같은 목록을 반환하려고합니다.
/
/login
/join
/password
Route::getRoutes()
경로 정보와 리소스가 포함 된 개체를 반환하는 메서드 를 발견했지만 경로 정보가 보호되고 정보에 직접 액세스 할 수 없습니다.
이것을 달성하는 다른 방법이 있습니까? 아마도 다른 방법일까요?
Route::getRoutes()
를 반환합니다 RouteCollection
. 각 요소 $route->getPath()
에서 현재 경로의 경로를 가져 오는 간단한 작업을 수행 할 수 있습니다 .
각 보호 된 매개 변수는 표준 getter로 가져올 수 있습니다.
루핑은 다음과 같이 작동합니다.
$routeCollection = Route::getRoutes();
foreach ($routeCollection as $value) {
echo $value->getPath();
}
콘솔 명령을 사용할 수 있습니다.
질문에서 묻는 Laravel 4
php artisan routes
Laravel 5 더 실제
php artisan route:list
도우미 (라 라벨 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.
Laravel 5의 경우 artisan 명령을 사용할 수 있습니다.
php artisan route:list
대신 php artisan routes
.
각 경로와 해당 세부 정보를 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>";
});
//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>
가독성을 높이는 더 좋은 방법은 경로를 등록하고 장인 출력으로 직접 웹 브라우저에 인쇄하는 것입니다.
Route::get('routes', function() {
\Artisan::call('route:list');
return \Artisan::output();
});
/ login / {id}와 같은 경로를 컴파일하고 접두사 만 원하는 경우 :
foreach (Route::getRoutes() as $route) {
$compiled = $route->getCompiled();
if(!is_null($compiled))
{
var_dump($compiled->getStaticPrefix());
}
}
$routeList = Route::getRoutes();
foreach ($routeList as $value)
{
echo $value->uri().'<br>';
}
Illuminate \ Support \ Facades \ Route를 사용합니다.
Laravel 5.4에서는 100 % 작동합니다.
암호
라 라벨 <= 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;
}
라 라벨> = 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
나는 예쁜 배열을 얻었다 이것으로, 시도하십시오
$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']);
}
}
Laravel 5 플러그인 과 함께 Oh-my-zsh 를 사용하는 사용자를위한 콘솔 명령
la5routes
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>";
});
참고URL : https://stackoverflow.com/questions/18394891/how-to-get-a-list-of-registered-route-paths-in-laravel
'programing tip' 카테고리의 다른 글
JavaScript를 사용하여 HTML 16 진수 색상 코드를 무작위로 생성하는 방법은 무엇입니까? (0) | 2020.12.06 |
---|---|
프로그래밍 방식으로 UIsegmentedControll을 어떻게 전환합니까? (0) | 2020.12.06 |
UITextField 외부의 아무 곳이나 터치 할 때 키보드를 닫는 방법 (신속하게)? (0) | 2020.12.06 |
연기 테스트 란 무엇입니까? (0) | 2020.12.06 |
Twitter Bootstrap으로 만든 모달에서 Google지도 표시 (0) | 2020.12.06 |