
Grupo de Rutas
En Laravel, puedes agrupar tus rutas utilizando el concepto de grupos de rutas. Los grupos de rutas te permiten aplicar configuraciones y características comunes a un conjunto de rutas relacionadas. Esto puede ser útil, por ejemplo, para aplicar middleware, establecer prefijos de URL, o compartir espacio de nombres de controladores.
Para crear un grupo de rutas, puedes utilizar el método Route::group()
. A continuación, te muestro un ejemplo básico de cómo crear un grupo de rutas en Laravel:
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {
Route::get('/dashboard', 'AdminController@dashboard');
Route::get('/users', 'AdminController@users');
Route::get('/settings', 'AdminController@settings');
});
En este ejemplo, se crea un grupo de rutas con el prefijo 'admin'
, lo que significa que todas las rutas dentro del grupo tendrán el prefijo /admin
. Además, se especifica el middleware 'auth'
, lo que significa que todas las rutas dentro del grupo requerirán autenticación.
Dentro del grupo de rutas, se definen varias rutas utilizando los métodos get
, post
, put
, etc., como se haría normalmente. En este caso, las rutas /dashboard
, /users
y /settings
están asociadas a los métodos correspondientes del controlador AdminController
.
Las configuraciones y características definidas en el grupo de rutas se aplicarán a todas las rutas dentro del grupo. En este ejemplo, todas las rutas tendrán el prefijo /admin
y requerirán autenticación debido al middleware 'auth'
.
Además de los ejemplos mencionados, puedes utilizar grupos de rutas para aplicar otros middleware, asignar espacio de nombres de controladores, establecer restricciones de dominio o esquema, y mucho más. Puedes consultar la documentación oficial de Laravel sobre grupos de rutas para obtener más información y ver todas las opciones disponibles: https://laravel.com/docs/routing#route-groups
Los grupos de rutas son una herramienta poderosa para organizar y configurar tus rutas de manera eficiente en Laravel, lo que te permite mantener tu código más limpio y estructurado.
Ejemplo con el ejercicio anterior
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\CourseController;
Route::get('/', HomeController::class, '__invoke');
Route::controller(CourseController::class)->group(function(){
Route::get('/courses', 'index');
Route::get('/courses/create', 'create');
Route::get('/courses/{course}', 'show');
});