Formularios reactivos con LiveWire sin recargar la página

Clase 12 de 25Curso de Laravel

Resumen

¿Quieres registrar datos en tiempo real sin que tu página recargue constantemente? Laravel, junto a LiveWire, permite precisamente eso: integrar formularios dinámicos para ofrecer interactividad similar a JavaScript directamente desde PHP. En esta clase aprenderás cómo programar un formulario de comentarios capaz de guardar información automáticamente, brindando una experiencia ágil y fluida.

¿Cómo hacer que nuestro formulario sea reactivo y sin recargas?

La clave para crear formularios reactivos en Laravel está en usar la herramienta LiveWire. Esto permite enviar y validar datos en tiempo real desde la parte frontal (la vista Blade) hacia la parte trasera (el controlador) sin necesidad de recargar la página.

Los archivos principales que se manejan son:

  • Vista Blade (.blade.php), donde diseñamos nuestro formulario.
  • La clase PHP correspondiente, donde manejamos la lógica del formulario.

¿Qué elementos básicos necesitamos para nuestro formulario reactivo?

Nuestro formulario básico cuenta con estos elementos:

  • Un campo de texto para ingresar contenido.
  • Botón para enviar el comentario.
  • Botón para cancelar la operación.
  • Mensaje de error para mostrar validaciones.

Cada uno de estos elementos interactúa a través del atributo wire:model y un método LiveWire específico.

¿Cómo conectar el formulario con nuestra clase PHP?

Utilizamos el atributo wire:model para sincronizar nuestro input con una propiedad definida en nuestra clase LiveWire:

public $contenido = '';

En nuestra vista, establecemos esta conexión fácilmente:

<input wire:model="contenido" type="text">

Cada formulario al enviarse, ejecutará un método interno mediante LiveWire, usando el atributo:

<form wire:submit.prevent="add">

¿Cómo validar y guardar comentarios en nuestra base de datos?

Una vez que el formulario se envía, realizamos validaciones en nuestra clase PHP:

public function add()
{
    $this->validate([
        'contenido' => 'required|string|max:255'
    ]);

    $this->commentable->comentarios()->create([
        'contenido' => $this->contenido,
        'usuario_id' => 20 // temporal hasta implementar sesión de usuario
    ]);

    $this->reset('contenido', 'showForm');
}

Para evitar problemas con asignaciones masivas de Laravel, recuerda permitir específicamente qué campos serán rellenables en tu modelo:

protected $fillable = ['contenido', 'usuario_id'];

¿Cómo funciona el botón cancelar con LiveWire?

El botón cancelar utiliza el método toggle, que permite mostrar u ocultar el formulario fácilmente, cambiando un valor true/false:

public function toggle()
{
    $this->showForm = !$this->showForm;
}

¿Qué sucede después de guardar un comentario?

El formulario se limpia automáticamente, restableciendo los valores originales gracias al método LiveWire reset. Todo esto sucede sin recargar la página, ofreciendo una experiencia fluida e interactiva.

Ahora ya sabes cómo crear formularios interactivos con Laravel y LiveWire, así que pon en práctica lo aprendido y aprovecha sus características para optimizar tus aplicaciones web.