Práctica 401. Gestor de tareas con Laravel.
Se desea implementar una aplicación web utilizando Laravel que permita a los usuarios registrarse, iniciar sesión y gestionar sus tareas personales. Cada usuario podrá crear, editar, listar y eliminar tareas. Además, se deberá implementar validación de datos y usar vistas Blade para mostrar la información en el navegador.
Requisitos funcionales
- Autenticación de usuarios
- Registro de usuarios con nombre, email y contraseña.
- Inicio de sesión y cierre de sesión.
- Solo los usuarios autenticados pueden acceder al gestor de tareas.
- Gestión de tareas
- Listado de tareas del usuario autenticado.
- Creación de nuevas tareas con título, descripción y estado (pendiente o completada).
- Edición de tareas existentes.
- Eliminación de tareas.
- Interfaz web con vistas Blade
- Una vista principal (
layout.blade.php) con cabecera y menú de navegación. - Vistas para el registro, login y gestión de tareas (
index,create,edit). - Uso de formularios Blade para enviar datos.
- Una vista principal (
Pasos de la práctica
1. Instalación y configuración
Crear un nuevo proyecto con Composer:
composer create-project laravel/laravel gestor-tareas
Configurar la base de datos en el archivo .env.
2. Autenticación
Instalar y configurar Laravel Breeze o Jetstream para generar el sistema de autenticación:
composer require laravel/breeze --dev
php artisan breeze:install
npm install && npm run dev
php artisan migrate
3. Creación del modelo y migración de tareas
Crear el modelo y la migración:
php artisan make:model Tarea -m
En la migración, definir los campos de la tabla tareas:
$table->id();
$table->string('titulo');
$table->text('descripcion')->nullable();
$table->boolean('completada')->default(false);
$table->foreignId('user_id')->constrained()->onDelete('cascade');
$table->timestamps();
4. Controlador y rutas de tareas
Crear el controlador:
php artisan make:controller TareaController --resource
Definir las rutas en routes/web.php:
use App\Http\Controllers\TareaController;
Route::middleware(['auth'])->group(function () {
Route::resource('tareas', TareaController::class);
});
5. Implementación de las vistas
- Crear una plantilla base
resources/views/layouts/app.blade.php. - Crear las vistas para listar (
index.blade.php), crear (create.blade.php) y editar (edit.blade.php) tareas. - Usar formularios Blade (
<form>) con las directivas@csrfy@method.
Ejemplo de formulario en create.blade.php:
<form action="{{ route('tareas.store') }}" method="POST">
@csrf
<label for="titulo">Título:</label>
<input type="text" name="titulo" required>
<label for="descripcion">Descripción:</label>
<textarea name="descripcion"></textarea>
<button type="submit">Guardar</button>
</form>
6. Validación
Validar los datos en el controlador:
$request->validate([
'titulo' => 'required|string|max:255',
'descripcion' => 'nullable|string',
]);
7. Ejecución de la aplicación
Iniciar el servidor de desarrollo:
php artisan serve
Acceder a la aplicación en http://localhost:8000.