En este videotutorial de nuestro Curso de Laravel 10 aprenderemos cómo mejorar la estructura de nuestras aplicaciones web con el uso de controladores, los cuales nos permiten agrupar parte de la lógica de nuestra aplicación dentro de clases, a las cuales llamaremos «controladores», y de «acciones» representadas por métodos. Esta característica es importante porque facilita la organización de aplicaciones de mediana o alta complejidad.

Además, veremos cómo generar controladores usando Artisan, cómo usar la inyección de dependencias y a interactuar con las vistas esta vez dentro de un controlador.

Mira el código en GitHub: actual, resultado, comparación.

Cómo generar controladores con Laravel 10 o superior

Para crear un nuevo controlador podemos usar el comando make:controller de Artisan en nuestra terminal:

php artisan make:controller NoteController

Los controladores son generados en el directorio App/Http/Controllers.

¿Qué es un controlador en Laravel 10?

Un controlador es una clase de PHP en la cual vamos a especificar la lógica de nuestra aplicación encargada de recibir una petición HTTP (representada por el objeto Illuminate\Http\Request) y de retornar una respuesta de tipo HTTP (Illuminate\Http\Response o Symfony\Component\HttpFoundation\Response).

Laravel incluye varias características que hacen muy fácil trabajar con controladores versus otros frameworks. Por ejemplo, si retornamos una cadena de texto, Laravel convertirá dicha cadena en una respuesta HTTP, o si retornamos un arreglo, Laravel lo convertirá en una respuesta HTTP de tipo JSON por nosotros. Asimismo, funciones como to_route son «Helpers» que envuelven la lógica para construir un objeto de tipo Illuminate\Http\RedirectResponse.

Por defecto, nuestro controlador va a extender la clase App\Http\Controllers\Controller que está dentro de tu aplicación (en el mismo directorio donde NoteController fue generado).

Si abrimos app/Http/Controllers/Controller.php podremos ver cómo dicha clase extiende de Illuminate\Routing\Controller.

Debido a que estas dos clases se llaman Controller, la clase de Laravel es importada con el alias BaseController.

Este controlador base agrega algunos métodos útiles, pero no es necesario, podemos crear un controlador que no extienda de ninguna otra clase.

Los controladores son simplemente clases que extienden de la clase Controller

Al usar un controlador y llamar a nuestro modelo desde ahí recuerda que debemos importarlo en la parte superior usando use App\Models\Note;

Cómo usar nuestro controlador desde una ruta

Para poder usar nuestro controlador debemos indicar en la ruta que queremos hacer uso de este:

Route::get('/notas', [NoteController::class, 'index'])->name('notes.index');

Al mover tu código recuerda siempre tener cuidado e importar de nuevo las clases que estés usando y no olvides probar que el código aún funcione tal como antes!

Únete a nuestra comunidad en Discord y comparte con los usuarios y autores de Styde, 100% gratis.

Únete hoy

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Traducir los mensajes de errores de validación en Laravel 10 o superior Lección siguiente Formulario de edición en Laravel 10 o superior