Route::get('showAllRoutes', function() {
$routeCollection = Route::getRoutes();
foreach ($routeCollection as $value) {
echo $value->uri()."<br>";
echo $value->methods()[0]."<br>";
echo $value->getName()."<br>";
echo $value->getActionName()."<br>";
echo "<hr>";
}
return "hecho";
});
Mostrando entradas con la etiqueta Rutas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Rutas. Mostrar todas las entradas
Routes: Listar todas las rutas mediante una URL
Crear un nuevo archivo de rutas
Todo se hace en routes/web.php pero para que esté todo más limpio y organizado podemos crear el fichero routes\admin.php q contendrá:
Y en app\Providers\RouteServiceProvider.php dentro de boot:
Como le hemos puesto prefijo Para acceder a esa ruta será ya:
http://miproyecto/admin
use Illuminate\Support\Facades\Route;
use App\Http\Livewire\Admin\ShowProducts;
Route::get("/", ShowProducts::class)->name('admin.index');
Y en app\Providers\RouteServiceProvider.php dentro de boot:
Route::middleware('web', 'auth')
->prefix('admin')
->namespace($this->namespace)
->group(base_path('routes/admin.php'));
Como le hemos puesto prefijo Para acceder a esa ruta será ya:
http://miproyecto/admin
RouteServiceProvider: Creando url amigables dinámicamente
Por ejemplo en routes\peliculas\peliculas.php:
Y en ese Controller:
Ejemplo:
http://midominio/public/peliculas/casablanca -> La url de esta página es: casablanca
http://midominio/public/peliculas/xxx -> da error
$friendlyUrl = ['lo-que-el-viento-se-llevo','rebeca','que-verde-era-mi-valle','la-senora-miniver','casablanca'];
foreach ($friendlyUrl as $clave=>$valor) {
Route::get($valor, [DeveloperController::class, 'prueba'])->name($valor)->middleware('auth');
}
Y en ese Controller:
function getCurrentRoute() {
return Request::route()->getName();
}
public function prueba(Request $request) {
echo "La url de esta página es: ".getCurrentRoute();
die;
}
Ejemplo:
http://midominio/public/peliculas/casablanca -> La url de esta página es: casablanca
http://midominio/public/peliculas/xxx -> da error
RouteServiceProvider: Creando rutas
En app\Providers\RouteServiceProvider.php en public function map() añadir:
En el mismo En app\Providers\RouteServiceProvider.php crear esas funciones:
En routes\peliculas\peliculas.php:
En routes\peliculas\peliculasAnno.php:
Ejemplos:
http://midominio/public/peliculas -> da "estás en peliculas"
http://midominio/public/peliculas/anno -> da "estas en Estás en peliculas/anno"
http://midominio/public/peliculas/anno/1992 -> da "estas en Estás en peliculas/anno: 1992"
$this->mapPeliculasRoutes();
$this->mapPeliculasAnnoRoutes();
En el mismo En app\Providers\RouteServiceProvider.php crear esas funciones:
protected function mapPeliculasRoutes() {
Route::prefix('peliculas/')
->middleware('web')
->namespace($this->namespace)
->group(base_path('routes/peliculas/peliculas.php'));
}
protected function mapPeliculasAnnoRoutes() {
Route::prefix('peliculas/anno/')
->middleware('web')
->namespace($this->namespace)
->group(base_path('routes/peliculas/peliculasAnno.php'));
}
En routes\peliculas\peliculas.php:
Route::get('/', function() {
return "estás en peliculas";
});
En routes\peliculas\peliculasAnno.php:
Route::get('/', function() {
return "Estás en peliculas/anno";
});
Route::get('/{anno}', function($anno) {
return "Estás en peliculas/anno: ".$anno;
});
Ejemplos:
http://midominio/public/peliculas -> da "estás en peliculas"
http://midominio/public/peliculas/anno -> da "estas en Estás en peliculas/anno"
http://midominio/public/peliculas/anno/1992 -> da "estas en Estás en peliculas/anno: 1992"
Rutas agrupar
Por ejemplo:
Se podría agrupar (y además añadir a todas un mismo middleware):
Route::get('/admin', 'admin\HomeController@index')->name('admin.home');
Route::resource('/admin/files', 'admin\FileController')->names('admin.files');
Se podría agrupar (y además añadir a todas un mismo middleware):
// prefix para la ruta y namespace para los controllers
Route::group(['prefix' => 'admin', 'namespace' => 'admin', 'middleware' => 'auth'], function () {
Route::get('/', 'HomeController@index')->name('admin.home');
Route::resource('/files', 'FileController')->names('admin.files');
});
Ruta redirigir a una ruta desde el Controller
En web.php de routes:
En el Controller uno:
Para probarlo:
Route::get("/aaa", "Uno@metodo_01")->name("met1");
Route::get("/bbb", "Uno@metodo_02")->name("met2");
En el Controller uno:
public function metodo_01() {
// hacer todo lo que haya q hacer en este metodo
// y cuando haya terminado redirigir al metodo_02
return redirect()->route('met2');
}
public function metodo_02() {
return "Estás en metodo_02 del controller Uno";
}
Para probarlo:
http://localhost/LARAVEL/blog/public/aaa
Ejemplos diferentes Routes
Una función directamente en routes/web sin que envíe ni a controlador ni vista:
// Mandar directamente a una vista sin pasar por un controller
A la hora de llamar a una ruta con parámetros se puede hacer:
Pasar variables de javascript a una ruta:
Route::get('/prueba/{id}/{nombre}', function ($id, $nombre) {
return "El id es ".$id." y el nombre es ".$nombre;
})->where("nombre", "['a-z','A-Z']+");
// Mandar directamente a una vista sin pasar por un controller
Route::get('/', function () {
return view('front/index');
});
Route::get('/', 'PortadaController@index');
Auth::routes();
Route::resource('peliculas', 'PeliculasController');
Route::get('buscar/{item}', 'BuscarController@buscar')->name('buscar');
Route::get('/borrar-colaborador/{id}', 'ColaboradorController@borrarColaborador')->name('borrar-colaborador');
Route::resource('criticas', 'CriticasController')->middleware('auth', ['except' => ['frontCriticasList']]);
Route::post('youtube.update-hist-youtube', 'YoutubeController@updateHistyoutube')->name('youtube.update-hist-youtube');
Route::group(['prefix' => 'api'], function() {
Route::group(['prefix' => 'v1'], function() {
Route::get('create', 'GarciController@create');
Route::get('index', 'GarciController@index');
});
Route::group(['prefix' => 'v2'], function() {
Route::get('create', 'YoutubeController@create');
Route::get('index', 'YoutubeController@index');
});
});
Route::get('ajaxRequest', 'AjaxController@ajaxRequest');
Route::post('ajaxRequest', 'AjaxController@ajaxRequestPost');
A la hora de llamar a una ruta con parámetros se puede hacer:
<a href="{{ route('historial_list', ['anno' => '1951']) }}">xxx</a>
O directamente:
<a href="{{ route('historial_list', ['1951']) }}">xxx</a>
Pasar variables de javascript a una ruta:
$("#annoBusq").change(function(){
anno = $("#annoBusq option:selected").val();
ruta = "{{ route('historial_list', ['anno' => ":anno"]) }}";
ruta = ruta.replace(':anno', anno);
location.href = ruta;
});
Rutas
Las rutas se generan físicamente en el fichero:
Ejemplo rutas:
Para saber todas las rutas creadas en tu proyecto:
\routes\web.php
Ejemplo rutas:
Route::get('usuarios/{id}', UserController@show);
Route::get('usuarios/{id}', UserController@show)->where('id', '[0-9]+');
Para saber todas las rutas creadas en tu proyecto:
php artisan route:list
Suscribirse a:
Entradas (Atom)