Agilizar el manejo de solicitudes en Laravel con whenHas()

  • Publicado el 14 noviembre, 2024
  • Palabras: 182

En el mundo del desarrollo web, manejar campos de entrada opcionales de manera eficiente a veces puede ser un desafío. Laravel, siempre a la vanguardia de la experiencia del desarrollador, ofrece una solución elegante con el método whenHas en el objeto de solicitud. Este método le permite ejecutar código condicionalmente en función de la presencia de un valor de entrada. Profundicemos en cómo esta característica puede mejorar sus aplicaciones Laravel.

Agilizar el manejo de solicitudes en Laravel con whenHas()

#Comprender $request->whenHas()

El método whenHas del objeto de solicitud le permite ejecutar un cierre si un valor especificado está presente en la solicitud. También puede ejecutar un cierre alternativo si el valor no está presente. Esta es la sintaxis básica:

 

$request->whenHas('input_name', function ($value) {
    // Esto se ejecuta cuando la entrada está presente.
}, function () {
    // Esto se ejecuta cuando la entrada no está presente. (opcional)
});

 

#Ejemplo práctico

Consideremos un escenario en el que estamos actualizando el perfil de un usuario. Queremos actualizar el nombre del usuario si se proporciona en la solicitud; de lo contrario, establecerlo en un valor predeterminado.

A continuación, se muestra cómo podemos implementar esto utilizando whenHas:

 

<?php

namespace AppHttpControllers;

use AppModelsUser;
use IlluminateHttpRequest;

class UserController extends Controller
{
    public function updateProfile(Request $request, User $user)
    {
        $request->whenHas('name', 
            function ($name) use ($user) {
                $user->update(['name' => $name]);
            },
            function () use ($user) {
                $user->update(['name' => 'Anonymous User']);
            }
        );

        $request->whenHas('email', 
            function ($email) use ($user) {
                $user->update(['email' => $email]);
            }
        );

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

 

En este ejemplo, usamos whenHas para:

 

  • Actualizar el nombre del usuario si se proporciona, de lo contrario, configurarlo como 'Usuario anónimo'
  • Actualizar el correo electrónico del usuario solo si se proporciona en la solicitud

 

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

 

// PATCH /api/users/1
// Input
{
    "name": "John Doe"
}

// Output
{
    "id": 1,
    "name": "John Doe",
    "email": "john@example.com",
    "updated_at": "2023-06-15T16:30:00.000000Z"
}

// Input (no name provided)
{
    "email": "newemail@example.com"
}

// Output
{
    "id": 1,
    "name": "Anonymous User",
    "email": "newemail@example.com",
    "updated_at": "2023-06-15T16:35:00.000000Z"
}

 

Recuerde, si bien whenHas es poderoso para verificaciones de presencia simples, para una lógica condicional más compleja o cuando necesita realizar operaciones basadas en el valor real de la entrada (no solo su presencia), es posible que aún necesite usar declaraciones if tradicionales o cambiar a otras características de Laravel como solicitudes de formulario o clases de solicitud personalizadas.

 

 

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