
Controladores
En Laravel, los controladores son clases que contienen métodos que manejan las solicitudes HTTP y encapsulan la lógica de tu aplicación. Los controladores son responsables de procesar los datos recibidos desde las rutas y realizar acciones como consultar la base de datos, manipular datos, aplicar lógica empresarial y devolver una respuesta al usuario.
Puedes crear un controlador en Laravel utilizando el comando de Artisan llamado make:controller
. Por ejemplo, para crear un controlador llamado MiControlador
, puedes ejecutar el siguiente comando en la terminal:
php artisan make:controller MiControlador
Esto generará un archivo MiControlador.php
en el directorio app/Http/Controllers
con una estructura básica de controlador.
Dentro del controlador, puedes definir diferentes métodos para manejar diferentes acciones. Por ejemplo, puedes tener un método para mostrar una vista, otro para guardar datos en la base de datos, otro para procesar un formulario, etc.
Aquí hay un ejemplo de un controlador básico en Laravel:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MiControlador extends Controller
{
public function index()
{
// Lógica para mostrar una vista o realizar otras acciones
}
public function store()
{
// Lógica para guardar datos en la base de datos
}
// Otros métodos del controlador...
}
En este ejemplo, el controlador MiControlador
tiene dos métodos: index
y store
. El método index
puede ser utilizado para mostrar una vista o realizar otras acciones cuando se accede a una ruta asociada a este método. El método store
puede ser utilizado para guardar datos en la base de datos cuando se realiza una solicitud HTTP POST a la ruta asociada a este método.
Una vez que hayas creado tu controlador, puedes asociarlo a una ruta en el archivo de rutas (routes/web.php
o routes/api.php
) utilizando el nombre del controlador y el método correspondiente, como se mencionó anteriormente.
Los controladores en Laravel te permiten organizar y reutilizar tu código de manera eficiente, separando la lógica de las rutas y manteniendo tu código más estructurado y mantenible.

Ejemplo:
php artisan make:controller HomeController
En nuestras Rutas, vamos a usar el nuevo controlador
Route::get('/', HomeController::class, '__invoke');
En el controlador lo siguiente:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function __invoke()
{
return 'Hello World';
}
}
Ahora vamos a adminitrar varias rutas desde un controlador
php artisan make:controller CourseController
Route::get('/courses', [CourseController::class, 'index']);
Route::get('/courses/create', [CourseController::class, 'create']);
Route::get('/courses/{course}', [CourseController::class, 'show']);
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class CourseController extends Controller
{
public function index()
{
return 'Page for courses';
}
public function create()
{
return 'Page for creating course';
}
public function show($id)
{
return 'Course '.$id;
}
}