He estado tratando de usar el método Route::getRoutes() de Laravel para generar un mapa del sitio dinámico. El problema es que ese método devuelve rutas que en realidad son redirecciones:
Ejemplo web.php:
Route::get('not-redirected', function() { return view('not-redirected'); } Route::get('redirected', function() { return redirect('was-redirected'); } Route::getRoutes() devuelve ['not-redirected', 'was-redirected'] . ¿Hay alguna manera de filtrar dinámicamente las rutas redirigidas de esta salida?
Mi resultado deseado para el web.php anterior sería ['not-redirected'] .
EDITAR: Me he dado cuenta de que la php artisan route:list no devuelve redireccionamientos. Sin embargo, no puedo entender por qué con solo mirar el código fuente... Parece que llama a la misma función, Route::getRoutes() .
Parece que no hay forma de determinar el retorno de una ruta determinada. La solución que se me ocurrió es agregar un grupo a todas las rutas que son 'especiales', de esta manera puedes agregar fácilmente atributos personalizados a la acción de una ruta.
Route::group(['return_type' => 'redirect'], function () { Route::get('not-redirected', function () { return view('not-redirected'); }); Route::get('redirected', function () { return redirect('was-redirected'); }); });Entonces podría recorrer las rutas de esta manera:
$routes = Route::getRoutes()->get(); foreach ($routes as $route) { if ($route->getAction('return_type') === 'redirect') { // Or whatever you want to do in this case continue; } }