Rutas y Controladores: El Sistema de Navegación de Laravel

Inicio   /   Rutas y Controladores: El Sistema de Navegación de Laravel

Blog Rutas y Controladores: El Sistema de Navegación de Laravel


Rutas y Controladores: El Sistema de Navegación de Laravel


Aprende a gestionar el tráfico de tu aplicación con elegancia y eficiencia.


Imagina que tu aplicación es un edificio enorme. Las Rutas son los letreros que indican a dónde ir, y los Controladores son las oficinas donde ocurre el trabajo real. Sin una definición clara de estos dos elementos, tu código se convertiría en un laberinto imposible de navegar.

1. El Archivo de Rutas: routes/web.php

En Laravel, casi todas las rutas para tu interfaz web se definen en el archivo routes/web.php. Una ruta básica asocia una URL con una acción.

Tipos de Métodos HTTP

Para construir una aplicación profesional, debemos usar los verbos HTTP correctos según la intención de la acción:

Método Uso Típico
GET Solicitar una página o datos (Ver un formulario, leer un post).
POST Enviar datos nuevos (Guardar un registro de usuario).
PUT / PATCH Actualizar datos existentes.
DELETE Eliminar un recurso.

2. Pasaje de Parámetros en Rutas

A veces necesitas capturar segmentos de la URL, como el ID de un usuario o el slug de un artículo.

use Illuminate\Support\Facades\Route;

// Parámetro obligatorio
Route::get('/user/{id}', function (string $id) {
    return 'ID del usuario: ' . $id;
});

// Parámetro opcional con valor por defecto
Route::get('/blog/{category?}', function (string $category = 'general') {
    return "Mostrando categoría: {$category}";
});

3. Controladores: Organizando la Lógica

Escribir toda la lógica en el archivo de rutas lo volvería gigante e inmanejable. Para eso usamos los Controladores.

Paso 1: Crear el controlador con Artisan

php artisan make:controller UserController

Paso 2: Definir el método en el Controlador (app/Http/Controllers/UserController.php)

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\View\View;

class UserController extends Controller
{
    /**
     * Muestra el perfil de un usuario específico.
     */
    public function show(string $id): View
    {
        $user = User::findOrFail($id); // Busca el usuario o lanza error 404

        return view('user.profile', [
            'user' => $user
        ]);
    }
}

Paso 3: Vincular la Ruta al Controlador

use App\Http\Controllers\UserController;

// Sintaxis recomendada en Laravel moderno
Route::get('/profile/{id}', [UserController::class, 'show']);

4. Route Model Binding (Inyección de Modelos)

Laravel tiene un truco de magia: si el nombre del parámetro en la ruta {user} coincide con el nombre de la variable en el controlador, Laravel busca el objeto en la base de datos automáticamente.

// Ruta: Route::get('/profile/{user}', [UserController::class, 'show']);

// Controlador:
public function show(\App\Models\User $user) 
{
    // ¡Laravel ya buscó al usuario por su ID! No necesitas hacer User::find($id)
    return view('user.profile', compact('user'));
}

5. Rutas con Nombre (Named Routes)

Nunca escribas URLs a mano en tus vistas. Usa nombres. Si mañana decides cambiar la URL de /contacto a /contactanos, solo tendrás que hacerlo en un lugar.

// Definición
Route::get('/configuracion/privacidad', [SettingsController::class, 'index'])->name('settings.privacy');

// Uso en una vista Blade o redirección
<a href="{{ route('settings.privacy') }}">Ir a Privacidad</a>
return redirect()->route('settings.privacy');
Consejo de Arquitectura: Mantén tus controladores "delgados" (Skinny Controllers). Su única función debe ser recibir la petición, pedir datos y devolver una respuesta. Si tienes 200 líneas de código en un método, es hora de mover esa lógica a un Servicio o al Modelo.

Ahora que ya sabes cómo moverte por tu aplicación, el siguiente paso es aprender a validar que los datos que envía el usuario sean correctos con Form Requests.

Tags: Laravel, php, rutas, curso, aprende,

Ultimas Noticias