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.

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