3-2-Ejemplo Básico (Rutas, Controlador y Vista)
Ejemplo Básico (Rutas, Controlador y Vista)
Laravel sigue el patrón MVC (Modelo-Vista-Controlador). Aquí te muestro un ejemplo sencillo de cómo crear una pequeña aplicación para guardar tareas en un arreglo.
1. Configurar la ruta (routes/web.php)
<?php
use App\Http\Controllers\TareaController;
use Illuminate\Support\Facades\Route;
Route::get('/tareas', [TareaController::class, 'index'])->name('tareas.index');
Route::post('/tareas', [TareaController::class, 'store'])->name('tareas.store');2. Crear el controlador (app/Http/Controllers/TareaController.php)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TareaController extends Controller
{
private $tareas = []; // Arreglo para almacenar las tareas
public function index()
{
return view('tareas', ['tareas' => $this->tareas]);
}
public function store(Request $request)
{
$nuevaTarea = $request->input('nombre');
$this->tareas[] = $nuevaTarea;
return redirect()->route('tareas.index');
}
}3. Crear la vista (resources/views/tareas.blade.php)
<!DOCTYPE html>
<html>
<head>
<title>Lista de Tareas</title>
</head>
<body>
<h1>Mis Tareas</h1>
<form method="POST" action="{{ route('tareas.store') }}">
@csrf
<input type="text" name="nombre" placeholder="Nueva tarea" required>
<button type="submit">Agregar</button>
</form>
<ul>
@foreach($tareas as $tarea)
<li>{{ $tarea }}</li>
@endforeach
</ul>
</body>
</html>Explicación del flujo:
Rutas: Definen los puntos de entrada a la aplicación.
GET
/tareas: Muestra el formulario y la listaPOST
/tareas: Procesa el formulario
Controlador:
index(): Prepara los datos para la vistastore(): Recibe los datos del formulario y los guarda
Vista:
Muestra el formulario con protección CSRF
Muestra la lista de tareas usando Blade
Nota importante:
Este ejemplo usa un arreglo en memoria, por lo que las tareas se perderán al refrescar la página. En una aplicación real usarías una base de datos.
Ejemplo con Debugging usando dd() o dump()
Voy a mejorar el ejemplo anterior añadiendo funciones de debugging para verificar que los datos del formulario están llegando correctamente al controlador. Usaremos dd() (dump and die) y dump().
Controlador Actualizado (TareaController.php)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TareaController extends Controller
{
private $tareas = [];
public function index()
{
// Debug: Verificar contenido del arreglo antes de enviar a la vista
dump($this->tareas);
return view('tareas', ['tareas' => $this->tareas]);
}
public function store(Request $request)
{
// Debug 1: Ver todo el request
dump($request->all());
// Debug 2: Ver solo el campo 'nombre'
dump('Nombre recibido:', $request->input('nombre'));
$nuevaTarea = $request->input('nombre');
// Validación básica
if(empty($nuevaTarea)) {
dd('Error: El nombre de la tarea no puede estar vacío');
}
$this->tareas[] = $nuevaTarea;
// Debug 3: Ver el arreglo después de agregar
dump('Tareas después de agregar:', $this->tareas);
return redirect()->route('tareas.index');
}
}Vista Actualizada (tareas.blade.php)
<!DOCTYPE html>
<html>
<head>
<title>Lista de Tareas - Debug</title>
<style>
.debug-info {
background: #f0f0f0;
padding: 10px;
margin: 10px 0;
border-left: 4px solid #ccc;
}
</style>
</head>
<body>
<h1>Mis Tareas</h1>
<div class="debug-info">
<h3>Debug: Información del formulario</h3>
@dump($errors ?? null)
</div>
<form method="POST" action="{{ route('tareas.store') }}">
@csrf
<input type="text" name="nombre" placeholder="Nueva tarea" required>
<button type="submit">Agregar</button>
</form>
<h2>Lista de Tareas:</h2>
@if(count($tareas) > 0)
<ul>
@foreach($tareas as $index => $tarea)
<li>Tarea #{{ $index + 1 }}: {{ $tarea }}</li>
@endforeach
</ul>
@else
<p>No hay tareas aún.</p>
@endif
</body>
</html>¿Qué hace cada función de debugging?
dump(): Muestra información pero permite que la ejecución continúeÚtil para ver múltiples valores en secuencia
Se muestra en la barra de debug de Laravel o en la página
dd(): Muestra información y detiene la ejecución (dump and die)Perfecto para debugging profundo en un punto específico
Útil para validar datos o encontrar errores
@dump()en Blade: Muestra variables directamente en la vistaExcelente para ver el contenido de variables en el frontend
Flujo de debugging recomendado:
Primero verifica si el request llega al controlador con
dump($request->all())Luego verifica datos específicos con
dump($request->input('nombre'))Usa
dd()cuando encuentres un problema crítico que detenga la ejecuciónEn la vista, usa
@dump()para ver el estado de las variables
Mejora adicional: Validación
Puedes añadir validación más robusta:
public function store(Request $request)
{
$request->validate([
'nombre' => 'required|min:3|max:100'
]);
// El resto del código...
}
Comentarios
Publicar un comentario