Dominar el manejo de solicitudes con enums en Laravel

  • Publicado el 18 noviembre, 2024
  • Palabras: 190

PHP 8.1 introdujo los enums y Laravel ha integrado sin problemas esta potente función en sus capacidades de gestión de solicitudes. Con el método de enum en el objeto de solicitud, ahora puede recuperar y validar sin esfuerzo los valores de enumeración de las solicitudes entrantes. Exploremos cómo esta función puede mejorar sus aplicaciones Laravel.

Dominar el manejo de solicitudes con enums en Laravel

#Comprender $request->enum()

El método enum del objeto de solicitud le permite recuperar datos de entrada como una instancia de una clase de enumeración especificada. Esta es la sintaxis básica:

 

$enumValue = $request->enum('input_name', EnumClass::class);

 

Si el valor de entrada no existe o no coincide con ningún valor de respaldo en la enumeración, se devuelve nulo.

#Ejemplo práctico

Consideremos un escenario en el que estamos creando una API para administrar tareas. Cada tarea tiene un estado que puede ser "pendiente", "en progreso" o "completada". Usaremos una enumeración para representar estos estados.

Primero, definamos nuestra enumeración:

 

<?php

namespace AppEnums;

enum TaskStatus: string
{
    case PENDING = 'pendiente';
    case IN_PROGRESS = 'en_progreso';
    case COMPLETED = 'completada';
}

 

Ahora, creemos un método de controlador para actualizar el estado de una tarea:

 

<?php

namespace AppHttpControllers;

use AppEnumsTaskStatus;
use AppModelsTask;
use IlluminateHttpRequest;

class TaskController extends Controller
{
    public function updateStatus(Request $request, Task $task)
    {
        $newStatus = $request->enum('status', TaskStatus::class);

        if ($newStatus === null) {
            return response()->json(['error' => 'Invalid status provided'], 400);
        }

        $task->status = $newStatus;
        $task->save();

        return response()->json($task);
    }
}

 

En este ejemplo, usamos $request->enum() para:

  • Recuperar la entrada 'status' como una enumeración TaskStatus
  • Validar que el estado proporcionado sea válido (no nulo)
  • Actualizar la tarea con el nuevo estado


Así es como se verían la entrada y la salida:

 

// PUT /api/tasks/1
// Input
{
    "status": "in_progress"
}

// Output (success)
{
    "id": 1,
    "title": "Complete project proposal",
    "status": "in_progress",
    "updated_at": "2023-06-15T15:30:00.000000Z"
}

// Input with invalid status
{
    "status": "started"
}

// Output (error)
{
    "error": "Invalid status provided"
}

 

Al aprovechar $request->enum(), puede crear aplicaciones más robustas y seguras en cuanto a tipos que se alinean estrechamente con su modelo de dominio. Esta característica cierra la brecha entre la representación interna de datos de su aplicación y las solicitudes entrantes, lo que proporciona una forma limpia y eficiente de manejar tipos enumerados en sus aplicaciones Laravel.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión