laravel-controladores-y-request-en-laravel

Controladores y Request en Laravel

  • 3 min

Un controlador es la clase que recibe una petición y coordina la respuesta de la aplicación.

En Laravel, la filosofía es: “El archivo de rutas (web.php) solo debe ser un índice, no el libro entero”. Las rutas deben apuntar a un Controlador, y el Controlador es quien hace el trabajo.

Creando tu primer controlador

No lo crees a mano. Usa a tu asistente Artisan:

php artisan make:controller ProductoController
Copied!

Esto genera un archivo en app/Http/Controllers/ProductoController.php. Es una clase vacía donde pondremos nuestras funciones (llamadas métodos).

Moviendo la lógica: de la ruta al controlador

Vamos a crear un método para mostrar un listado de productos.

A. En el Controlador (ProductoController.php):

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProductoController extends Controller
{
    // Método para mostrar la lista
    public function index() 
    {
        $productos = ['Teclado', 'Ratón', 'Monitor']; // Simulamos datos de BD
        
        // Devolvemos la vista pasando los datos
        return view('productos.lista', ['items' => $productos]);
    }
}
Copied!

B. En el archivo de Rutas (web.php): Ahora la ruta queda limpísima. Solo dice “Si vas a /productos, llama al método index del ProductoController”.

use App\Http\Controllers\ProductoController;
use Illuminate\Support\Facades\Route;

// Sintaxis: [Clase::class, 'NombreDelMetodo']
Route::get('/productos', [ProductoController::class, 'index']);
Copied!

El objeto Request: adiós a $_POST y $_GET

Aquí viene uno de los cambios más grandes respecto al PHP clásico. En lugar de buscar variables globales como $_POST['nombre'], Laravel te entrega un Objeto Request que contiene toda la información de la petición HTTP de forma ordenada y segura.

¿Cómo se usa? (Inyección de Dependencias) Simplemente “pides” el objeto en los parámetros de tu función. Laravel es tan listo que, al ver que pides Request $request, te lo inyecta automáticamente lleno de datos.

Ejemplo: Procesar un formulario de contacto

Supongamos que tienes un formulario HTML que envía nombre y email por POST.

// En el Controlador
public function guardar(Request $request) 
{
    // PHP Antiguo (NO HACER):
    // $nombre = $_POST['nombre'];

    // LARAVEL (Forma Correcta):
    
    // 1. Obtener un dato específico
    $nombre = $request->input('nombre');
    
    // 2. Obtener todo el formulario como array
    $datos = $request->all();
    
    // 3. Verificar si viene un dato (true/false)
    if ($request->has('suscripcion')) {
        // ...
    }

    // 4. Obtener la IP del usuario
    $ip = $request->ip();

    // Lógica para guardar (lo veremos luego)...
    
    // 5. Redirigir a otra página
    return redirect('/gracias')->with('mensaje', '¡Recibido!');
}
Copied!

¿Por qué es mejor usar Request?

  1. Acceso uniforme: Request facilita leer datos, archivos, cabeceras y metadatos. No valida ni sanitiza automáticamente: debes aplicar reglas de validación y escapar la salida.
  2. Uniformidad: No importa si el dato viene por JSON (API), por formulario POST o por URL GET. El método $request->input('dato') funciona igual para todos.
  3. Métodos útiles: Tiene funciones integradas como $request->isMethod('post'), $request->file('foto'), etc.