Método flash en la sesiones en Laravel, gestiona mensajes temporales

  • Publicado el 07 enero, 2025
  • Palabras: 104

Aprende a administrar eficazmente datos de sesiones temporales en Laravel usando métodos flash, perfectos para mensajes de estado, alertas y notificaciones temporales de usuarios.

Método flash en la sesiones en Laravel, gestiona mensajes temporales

#Uso básico

A veces, es posible que desees almacenar elementos en la sesión para la próxima solicitud. Puedes hacerlo mediante el método flash. Los datos almacenados en la sesión mediante este método estarán disponibles inmediatamente y durante la siguiente solicitud HTTP. Después de la siguiente solicitud HTTP, los datos "flasheados" se eliminarán. Los datos flash son principalmente útiles para mensajes de estado de corta duración:

 

$request->session()->flash('status', 'Task was successful!');

 

#Métodos de datos Flash extendidos

// Conservar todos los datos flash
$request->session()->reflash();

// Conservar elementos específicos
$request->session()->keep(['username', 'email']);

// Flash solo para la solicitud actual
$request->session()->now('status', 'Task was successful!');

 

#Ejemplo práctico

A continuación se muestra una implementación práctica para un sistema de procesamiento de pedidos:

 

class OrderController extends Controller
{
    public function store(OrderRequest $request)
    {
        try {
            $order = Order::create($request->validated());
            
            // Flash success message for next request
            $request->session()->flash('status', 'Order created successfully!');
            
            return redirect()->route('orders.show', $order);
            
        } catch (Exception $e) {
            // Flash error for current request only
            $request->session()->now('error', 'Failed to create order.');
            return back()->withInput();
        }
    }

    public function update(OrderRequest $request, Order $order)
    {
        $order->update($request->validated());

        // Flash multiple messages
        $request->session()->flash('status', 'Order updated!');
        $request->session()->flash('order_id', $order->id);
        
        // Keep these flashed items for extra request
        if ($request->has('preview')) {
            $request->session()->keep(['status', 'order_id']);
        }

        return redirect()->route('orders.index');
    }

    public function processMultiStep(Request $request)
    {
        // Keep form data between steps
        $request->session()->reflash();
        
        return redirect()->route('orders.step-' . $request->next_step);
    }
}

// In your blade view
@if (session('status'))
    <div class="alert alert-success">
        {{ session('status') }}
        @if (session('order_id'))
            <small>Order ID: {{ session('order_id') }}</small>
        @endif
    </div>
@endif

 

Los datos de la sesión Flash proporcionan una forma elegante de pasar mensajes temporales entre solicitudes en su aplicación 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