7 jul 2025

·

Ismael Santiago

🚫 Cómo limitar clics en botones Livewire en Filament v3 (Rate Limiting fácil)

Si usas Filament v3 y quieres evitar que un botón se dispare mil veces por minuto, te muestro cómo limitarlo en 2 pasos.

Instala el paquete

Abre tu terminal y ejecuta:

composer require danharrin/livewire-rate-limiting

Este paquete es mantenido por el creador de Filament y funciona perfecto con cualquier componente Livewire.

Aplícalo en tu método

Supongamos que tienes una página personalizada y quieres limitar un método llamado generarInforme. Añade el trait WithRateLimiting:

<?php
use DanHarrin\LivewireRateLimiting\WithRateLimiting;
use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException;
use Filament\Notifications\Notification;

class GenerarInforme extends Page
{
    use WithRateLimiting;
  
    public function generarInforme(): void
    {
        try {
            $this->rateLimit(3); // máximo 3 veces por minuto
        } catch (TooManyRequestsException $e) {
            Notification::make()
                ->title('Demasiados intentos')
                ->body("Espera {$e->secondsUntilAvailable} segundos.")
                ->danger()
                ->send();
            return;
        }
    }
}