Configuración de Rutas y Controladores en PHP Artisan

Clase 15 de 31Curso de Introducción a Laravel 9

Contenido del curso

Fundamentos de Laravel

Manos a la obra con nuestro proyecto

Trabajemos en el diseño web de nuestro proyecto

Resumen

Cuando trabajas con un panel administrativo en Laravel, una de las primeras tareas es definir las rutas necesarias para gestionar tus tablas de base de datos. Aquí se aborda paso a paso cómo configurar rutas tipo resource, crear el controlador asociado y preparar la primera vista para el módulo de publicaciones.

¿Cómo se crean rutas resource en Laravel?

El punto de partida es el archivo de rutas, donde se importa el controlador que gestionará las publicaciones. La sintaxis utilizada es la siguiente [0:28]:

php use App\Http\Controllers\PostController;

Route::resource('posts', PostController::class);

El método Route::resource es una forma eficiente de registrar siete rutas automáticamente con una sola línea de código. Estas rutas cubren todas las operaciones administrativas típicas de una tabla:

  • index: listar todos los registros.
  • create: mostrar el formulario de creación.
  • store: guardar un nuevo registro.
  • show: mostrar un registro individual.
  • edit: mostrar el formulario de edición.
  • update: actualizar un registro existente.
  • destroy: eliminar un registro.

Para verificar las rutas generadas, se ejecuta en el terminal [1:04]:

bash php artisan route:list

Este comando despliega el listado completo con el verbo HTTP de cada ruta: GET, POST, PUT y DELETE. Cada verbo cumple una función específica: consultar datos, enviar formularios, alterar registros o eliminarlos.

¿Cómo excluir rutas innecesarias del resource?

No siempre necesitas las siete rutas. En este caso, la ruta show no es requerida para el panel administrativo. Para excluirla se utiliza el método except [1:38]:

php Route::resource('posts', PostController::class)->except(['show']);

Al ejecutar nuevamente php artisan route:list, el resultado muestra seis rutas en lugar de siete. Esta práctica mantiene tu aplicación limpia y evita exponer endpoints que no vas a utilizar.

¿Cómo se configura el controlador y la vista inicial?

Una vez definidas las rutas, el siguiente paso es crear el método index dentro de PostController [2:18]:

php public function index() { return view('posts.index'); }

Este método retorna una vista ubicada en la carpeta posts dentro del directorio de vistas. Al acceder a la URL /posts en el navegador antes de crear la vista, Laravel muestra un error indicando que la vista no existe.

¿Cómo se estructura la vista del módulo de publicaciones?

Para crear la vista correctamente se siguen estos pasos [2:42]:

  • Dentro de resources/views, crear una carpeta llamada posts.
  • Agregar el archivo index.blade.php.
  • Reutilizar la plantilla base del dashboard que ya existe en el proyecto.

El archivo index.blade.php aprovecha el layout del panel administrativo mediante las directivas de Blade. Solo es necesario cambiar el contenido específico de la sección [2:58]:

php @section('content') Listado de publicaciones @endsection

Al actualizar el navegador, la página se renderiza correctamente heredando toda la estructura visual del panel: menú lateral, encabezado y estilos. Esto demuestra el poder de la herencia de plantillas en Blade, donde defines un layout una vez y lo reutilizas en cada módulo.

¿Por qué es importante este patrón para la administración?

Trabajar con Route::resource establece un patrón RESTful que Laravel sigue por convención. Esto significa que cada operación CRUD tiene una ruta predefinida con un verbo HTTP adecuado, un nombre de ruta automático y una estructura predecible en el controlador.

Este enfoque reduce errores, facilita el mantenimiento y permite que cualquier persona familiarizada con Laravel entienda la estructura del proyecto de inmediato. El siguiente paso natural es completar los métodos restantes del controlador: create, store, edit, update y destroy, cada uno con su vista correspondiente.

¿Ya has trabajado con rutas resource en tus proyectos? Comparte tu experiencia o dudas en los comentarios.