0-Sistema de Tareas
Guía de CRUD en Laravel para Principiantes: Sistema de Gestión de Tareas
Comandos para crear un proyecto de lista de tareas en Laravel
Aquí tienes los comandos necesarios para crear tu proyecto de lista de tareas en Laravel:
1. Crear el proyecto Laravel
composer create-project laravel/laravel gestor-tareas
cd gestor-tareas2. Crear el modelo (aunque en este caso usamos un array, es buena práctica crear el modelo)
php artisan make:model Tarea -mEl flag -m crea automáticamente una migración para el modelo.
3. Crear la migración (si no se creó con el modelo)
php artisan make:migration create_tareas_table4. Ejecutar las migraciones
php artisan migrate5. Crear el controlador
php artisan make:controller TareaController6. Crear las vistas (manual)
Necesitarás crear manualmente las carpetas y archivos de vistas:
resources/views/layouts/app.blade.phpresources/views/tareas/index.blade.phpresources/views/tareas/crear.blade.phpresources/views/tareas/mostrar.blade.php
7. Configurar las rutas en routes/web.php
Edita el archivo para agregar las rutas como se muestra en tu ejemplo.
Comando adicional útil: Servidor de desarrollo
php artisan serve
Comandos Esenciales de Laravel
| Comando | Acción | Descripción |
|---|---|---|
composer create-project laravel/laravel nombre-proyecto | Crear proyecto | Instala Laravel con todas las dependencias |
php artisan make:model Modelo -mcr | Crear modelo completo | Genera modelo, migración, controlador y recurso |
php artisan make:migration nombre_migracion | Crear migración | Genera archivo para modificar estructura de BD |
php artisan migrate | Ejecutar migraciones | Crea las tablas en la base de datos |
php artisan make:controller Controlador --resource | Crear controlador | Genera métodos para CRUD (index, create, store, etc.) |
php artisan serve | Iniciar servidor | Levanta el servidor en http://localhost:8000 |
Implementación Paso a Paso
1. Creación del Proyecto
composer create-project laravel/laravel task-manager
cd task-manager2. Configuración de Base de Datos
Archivo .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_tasks
DB_USERNAME=root
DB_PASSWORD=3. Generación de Estructura CRUD
php artisan make:model Task -mcr4. Definición de la Migración
database/migrations/xxxx_create_tasks_table.php:
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
}Ejecutar migración:
php artisan migrate5. Configuración de Rutas
routes/web.php:
use App\Http\Controllers\TaskController;
Route::resource('tasks', TaskController::class);6. Controlador de Tareas
app/Http/Controllers/TaskController.php (Métodos principales):
public function index()
{
$tasks = Task::latest()->get();
return view('tasks.index', compact('tasks'));
}
public function store(Request $request)
{
$request->validate(['name' => 'required|max:255']);
Task::create($request->all());
return redirect()->route('tasks.index')->with('success', 'Tarea creada');
}
public function update(Request $request, Task $task)
{
$request->validate(['name' => 'required|max:255']);
$task->update($request->all());
return redirect()->route('tasks.index')->with('success', 'Tarea actualizada');
}
public function destroy(Task $task)
{
$task->delete();
return redirect()->route('tasks.index')->with('success', 'Tarea eliminada');
}7. Vistas Blade
Layout Base (resources/views/layouts/app.blade.php):
<!DOCTYPE html>
<html>
<head>
<title>Gestor de Tareas</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">@yield('content')</div>
</body>
</html>Vista Principal (resources/views/tasks/index.blade.php):
@extends('layouts.app')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<h2>Lista de Tareas</h2>
<a class="btn btn-success" href="{{ route('tasks.create') }}">Crear Tarea</a>
</div>
</div>
@if ($message = Session::get('success'))
<div class="alert alert-success">{{ $message }}</div>
@endif
<table class="table table-bordered">
<tr>
<th>ID</th>
<th>Nombre</th>
<th width="280px">Acciones</th>
</tr>
@foreach ($tasks as $task)
<tr>
<td>{{ $task->id }}</td>
<td>{{ $task->name }}</td>
<td>
<form action="{{ route('tasks.destroy',$task->id) }}" method="POST">
<a class="btn btn-info" href="{{ route('tasks.show',$task->id) }}">Ver</a>
<a class="btn btn-primary" href="{{ route('tasks.edit',$task->id) }}">Editar</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Eliminar</button>
</form>
</td>
</tr>
@endforeach
</table>
@endsection8. Ejecución del Proyecto
php artisan serveVisita: http://localhost:8000/tasks
Consejos Prácticos
Redirecciones:
return redirect()->route('tasks.index'); // Redirige al listado
return redirect()->back(); // Vuelve a la página anteriorMensajes de Sesión:
return redirect()->route('tasks.index')->with('success', 'Tarea creada!');Validaciones:
$validated = $request->validate([
'name' => 'required|max:255|min:3',
'email' => 'required|email|unique:users',
]);Manejo de Errores en Vistas:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endifEste CRUD básico proporciona una base sólida que puedes expandir añadiendo más campos, autenticación de usuarios, o cualquier otra funcionalidad que necesites.
¿Qué comando se usa para crear un nuevo proyecto Laravel?
composer create-project laravel/laravel nombre-proyecto¿Qué comando crea un modelo con su migración?
php artisan make:model Modelo -m¿Qué comando ejecuta las migraciones en la base de datos?
php artisan migrate¿Qué comando crea un controlador?
php artisan make:controller NombreController¿Qué comando inicia el servidor de desarrollo?
php artisan serve¿Qué comando crea un modelo, migración, controlador y recurso?
php artisan make:model Modelo -mcr¿En qué archivo se configuran las rutas web?
routes/web.php¿Qué comando crea específicamente una migración?
php artisan make:migration nombre_migracionDespués de crear el proyecto, ¿qué comando se usa para navegar a su carpeta?
cd nombre-proyecto¿Qué comando se usa para crear vistas en Laravel?
Nota: No hay comando Artisan para crear vistas. Se crean manualmente enresources/views/
Comentarios
Publicar un comentario