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

bash
composer create-project laravel/laravel gestor-tareas
cd gestor-tareas

2. Crear el modelo (aunque en este caso usamos un array, es buena práctica crear el modelo)

bash
php artisan make:model Tarea -m

El flag -m crea automáticamente una migración para el modelo.

3. Crear la migración (si no se creó con el modelo)

bash
php artisan make:migration create_tareas_table

4. Ejecutar las migraciones

bash
php artisan migrate

5. Crear el controlador

bash
php artisan make:controller TareaController

6. Crear las vistas (manual)

Necesitarás crear manualmente las carpetas y archivos de vistas:

  • resources/views/layouts/app.blade.php

  • resources/views/tareas/index.blade.php

  • resources/views/tareas/crear.blade.php

  • resources/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

bash
php artisan serve

Comandos Esenciales de Laravel

ComandoAcciónDescripción
composer create-project laravel/laravel nombre-proyectoCrear proyectoInstala Laravel con todas las dependencias
php artisan make:model Modelo -mcrCrear modelo completoGenera modelo, migración, controlador y recurso
php artisan make:migration nombre_migracionCrear migraciónGenera archivo para modificar estructura de BD
php artisan migrateEjecutar migracionesCrea las tablas en la base de datos
php artisan make:controller Controlador --resourceCrear controladorGenera métodos para CRUD (index, create, store, etc.)
php artisan serveIniciar servidorLevanta el servidor en http://localhost:8000

Implementación Paso a Paso

1. Creación del Proyecto

bash
composer create-project laravel/laravel task-manager
cd task-manager

2. Configuración de Base de Datos

Archivo .env:

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

bash
php artisan make:model Task -mcr

4. Definición de la Migración

database/migrations/xxxx_create_tasks_table.php:

php
public function up()
{
    Schema::create('tasks', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->timestamps();
    });
}

Ejecutar migración:

bash
php artisan migrate

5. Configuración de Rutas

routes/web.php:

php
use App\Http\Controllers\TaskController;
Route::resource('tasks', TaskController::class);

6. Controlador de Tareas

app/Http/Controllers/TaskController.php (Métodos principales):

php
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):

html
<!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):

html
@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>
@endsection

8. Ejecución del Proyecto

bash
php artisan serve

Visita: http://localhost:8000/tasks


Consejos Prácticos

Redirecciones:

php
return redirect()->route('tasks.index'); // Redirige al listado
return redirect()->back(); // Vuelve a la página anterior

Mensajes de Sesión:

php
return redirect()->route('tasks.index')->with('success', 'Tarea creada!');

Validaciones:

php
$validated = $request->validate([
    'name' => 'required|max:255|min:3',
    'email' => 'required|email|unique:users',
]);

Manejo de Errores en Vistas:

html
@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

Este 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.

  1. ¿Qué comando se usa para crear un nuevo proyecto Laravel?
    composer create-project laravel/laravel nombre-proyecto

  2. ¿Qué comando crea un modelo con su migración?
    php artisan make:model Modelo -m

  3. ¿Qué comando ejecuta las migraciones en la base de datos?
    php artisan migrate

  4. ¿Qué comando crea un controlador?
    php artisan make:controller NombreController

  5. ¿Qué comando inicia el servidor de desarrollo?
    php artisan serve

  6. ¿Qué comando crea un modelo, migración, controlador y recurso?
    php artisan make:model Modelo -mcr

  7. ¿En qué archivo se configuran las rutas web?
    routes/web.php

  8. ¿Qué comando crea específicamente una migración?
    php artisan make:migration nombre_migracion

  9. Después de crear el proyecto, ¿qué comando se usa para navegar a su carpeta?
    cd nombre-proyecto

  10. ¿Qué comando se usa para crear vistas en Laravel?
    Nota: No hay comando Artisan para crear vistas. Se crean manualmente en resources/views/


Comentarios

Entradas más populares de este blog

13-CRUD en Laravel para Web y API con Rutas Normales (No Resource)

10-Introducción a Blade en Laravel con un Ejemplo Práctico