Jenner Acosta Diaz
Laravel 10

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