¿Qué es Livewire?
Cuando intentabas crear UIs dinámicas en Laravel, antes no había más remedio que combinar frameworks JavaScript como Vue.js o React, o escribir tú mismo las peticiones AJAX. Livewire es un paquete para Laravel que resuelve ese problema. Permite construir UIs reactivas solo con PHP y Blade. Puedes implementar en PHP funcionalidades que antes requerían JavaScript, como validación de formularios en tiempo real, búsqueda en vivo, contadores, etc.Livewire 4 funciona con Laravel 10 o superior y PHP 8.1 o superior. La versión más reciente actualmente es Livewire 4.
Resumen del mecanismo
Un componente Livewire es la combinación de una clase PHP en el servidor y una plantilla Blade. Cuando el usuario hace clic en un botón o rellena un formulario, Livewire envía por debajo una petición AJAX, ejecuta PHP y refleja en la página solo la parte modificada. El desarrollador no tiene que ser consciente de este mecanismo y puede escribir todo solo con PHP.Instalación
Ejecuta el siguiente comando en la raíz de tu aplicación Laravel.Creación del archivo de layout
Si vas a usarlo como componente de página completa, necesitas un archivo de layout. Puedes generarlo con el siguiente comando Artisan.resources/views/layouts/app.blade.php.
@livewireStyles y @livewireScripts cargan automáticamente los assets de Livewire y Alpine.js.
Tu primer componente
Existe un comando Artisan para generar componentes Livewire. Vamos a crear un contador simple.resources/views/components/⚡counter.blade.php.
Edita el archivo generado de la siguiente manera.
wire:click es el mecanismo para invocar un método PHP en lugar de JavaScript.
Propiedades y acciones
Propiedades — wire:model
Con la directiva wire:model puedes vincular bidireccionalmente un elemento de entrada con una propiedad del componente.
wire:model sincroniza con el servidor solo cuando se ejecuta una acción (por ejemplo, el envío del formulario). Si quieres que se sincronice a cada entrada, añade el modificador .live.
Acciones — wire:click, wire:submit
wire:click liga un método al evento de clic, y wire:submit al evento de envío de formulario.
Validación en tiempo real
En Livewire 4 puedes definir reglas de validación directamente en las propiedades con el atributo#[Validate].
#[Validate] disparan una validación automática en cada actualización. Al combinarlas con wire:model.live.blur, logras una experiencia de validación en tiempo real en la que aparece el mensaje de error justo al perder el foco.
$this->validate() verifica todas las propiedades a la vez al enviar el formulario. El patrón recomendado es usarlo en dos niveles junto con la validación automática mediante #[Validate].Hooks del ciclo de vida
Los componentes Livewire tienen varios hooks de ciclo de vida.mount() — Inicialización
mount() se usa para inicializar el componente. Es el equivalente al constructor.
updated() — Procesamiento tras cambiar propiedad
Si quieres insertar procesamiento después de que se actualice una propiedad, usa updated(). Si quieres acotarlo a una propiedad concreta, inclúyela en el nombre del método.
Integración con Laravel
Uso de modelos Eloquent
Livewire puede mantener modelos Eloquent directamente como propiedades.Objetos de formulario
Los formularios complejos se pueden extraer a objetos de formulario para mantener el componente sencillo.Conclusión
Resumen de los casos de uso en los que Livewire encaja especialmente bien.
Livewire lo pueden empezar a usar hoy mismo los ingenieros Laravel “que hayan usado Blade”. Su mayor fortaleza es que permite lograr UIs interactivas sin el coste de aprendizaje de un framework JavaScript.
Cuando se necesitan interacciones avanzadas al nivel de una SPA, Inertia.js encaja mejor, pero para formularios, paneles de administración o tablas de datos, en muchos casos Livewire permite implementarlo de manera más simple. Empieza probando con un componente pequeño.
Documentación oficial de Livewire
Consulta la documentación oficial para todas las funcionalidades de Livewire (subida de archivos, paginación, testing, etc.).