Controladores en Laravel: Organización de Rutas y Peticiones

Clase 7 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

Separar la lógica de las rutas en archivos independientes es una práctica fundamental para mantener proyectos escalables y fáciles de mantener. En Laravel, los controladores son los encargados de recibir peticiones y devolver respuestas, permitiendo que el archivo de rutas se mantenga limpio y legible.

¿Cómo crear un controlador con PHP Artisan?

Laravel ofrece una herramienta de línea de comandos llamada Artisan que genera la estructura base de un controlador sin necesidad de crear el archivo manualmente. El comando es el siguiente [01:10]:

bash php artisan make:controller PageController

Este comando crea automáticamente el archivo dentro de la carpeta App/Http/Controllers. El resultado es una clase con la estructura mínima necesaria para empezar a trabajar.

Dentro de este controlador se definen métodos que responden a cada petición. En el ejemplo se crean tres métodos:

  • home: maneja la página principal.
  • blog: gestiona la vista del listado de publicaciones.
  • post: recibe un parámetro y muestra una publicación específica.

Cada método contiene la lógica que antes vivía directamente en el archivo de rutas, logrando así aislar responsabilidades [02:00].

¿Cómo conectar las rutas con el controlador?

Para que las rutas reconozcan al controlador, es necesario importarlo en el archivo de rutas utilizando la sentencia use [02:25]:

php use App\Http\Controllers\PageController;

El namespace App con la A en mayúscula es un alias configurado en el archivo composer.json. Este alias apunta a la carpeta app/ del proyecto, por lo que la ruta completa se traduce en App\Http\Controllers\PageController [02:50].

Una vez importado, cada ruta se vincula al controlador reemplazando la función anónima por un arreglo que indica la clase y el método correspondiente:

php Route::get('/', [PageController::class, 'home']); Route::get('/blog', [PageController::class, 'blog']); Route::get('/blog/{post}', [PageController::class, 'post']);

La sintaxis PageController::class devuelve el nombre completo de la clase, y la segunda posición del arreglo es una cadena con el nombre del método que responderá a esa ruta [03:30].

¿Qué ventaja ofrece agrupar rutas por controlador?

Laravel permite crear un grupo de rutas asociado a un solo controlador, evitando repetir la referencia en cada línea. La estructura queda más compacta [04:30]:

php Route::controller(PageController::class)->group(function () { Route::get('/', 'home'); Route::get('/blog', 'blog'); Route::get('/blog/{post}', 'post'); });

Dentro del grupo solo se indica la ruta y el método, sin volver a escribir el controlador. Ambas técnicas producen el mismo resultado; la diferencia radica en la legibilidad cuando el número de rutas crece.

¿Por qué separar la lógica en controladores?

PHP permite resolver todo en un único documento, pero esa práctica dificulta el mantenimiento. Laravel proporciona una estructura de carpetas donde cada pieza cumple un rol específico [05:40]:

  • La ruta define la URL y el verbo HTTP.
  • El controlador recibe la petición, ejecuta la lógica y prepara la respuesta.
  • La vista presenta la información al usuario.

Este flujo —ruta invoca controlador, controlador retorna vista— es el patrón que Laravel promueve y que mantiene el código organizado a medida que el proyecto evoluciona.

¿Cuáles son los puntos clave para recordar?

  • Usar php artisan make:controller ahorra tiempo y garantiza una estructura consistente.
  • El namespace conecta la ubicación física del archivo con su referencia en el código.
  • Agrupar rutas con Route::controller() reduce la repetición y mejora la claridad.
  • Separar responsabilidades facilita futuras mejoras y el trabajo en equipo.

Pon en práctica la creación de tu propio controlador con al menos tres métodos y comparte en los comentarios qué estructura prefieres: rutas individuales o agrupadas.