A mi me funcionó con Livewire 3 haciendo esto:
<input
type="text" placeholder="// ..."
class="bg-slate-800 border-0 rounded-md w-1/3 p-3 text-white/60 text-xs"
wire:model.live="search"
>
wire:model.live me solucionó el tema
¿Cómo implementar un campo de búsqueda interactivo con Livewire?
El filtrado de contenido a través de un campo de búsqueda es una herramienta fundamental para mejorar la usabilidad en aplicaciones web. En esta guía, explicaremos cómo implementarlo utilizando un diseño limpio, propiedades adecuadas, y consultas efectivas en el backend. Esto nos permitirá obtener resultados en tiempo real sin necesidad de recargar la página, elevando así la experiencia del usuario.
¿Cómo diseñar el campo de búsqueda?
Lo primero es crear un formulario con el estilo deseado, que servirá como el cuadro de búsqueda en nuestra vista. Aquí te mostramos cómo hacerlo:
<form class="search-form"> <input class="bg-gray-800 border-none rounded-md w-1/3 p-2 text-white text-sm" placeholder="Buscar..." /> </form>
bg-gray-800), texto blanco (text-white), un ancho de un tercio (w-1/3), sin bordes (border-none) y esquinas redondeadas (rounded-md).¿Cómo conectar el campo a una propiedad Livewire?
Para que el campo de búsqueda interactúe dinámicamente con tus datos, es necesario conectarlo a una propiedad Livewire. Sigue estos pasos:
Crear la propiedad en el componente de Livewire:
public $search = '';
Aquí hemos registrado una propiedad $search que inicialmente está vacía.
Vinculación: Asegúrate de que el input esté ligado a esta propiedad para que su valor se actualice conforme el usuario escribe.
¿Cómo modificar la consulta de base de datos?
Una vez listo el diseño y la propiedad vinculada, el siguiente paso es ajustar la consulta en tu componente:
Utilizar la cláusula WHERE y LIKE:
public function updatedSearch() { $results = Model::where('title', 'like', '%' . $this->search . '%')->get(); }
Este ejemplo ejecuta una consulta cada vez que search cambia, filtrando por títulos que contengan el texto ingresado. Gracias a Livewire, este proceso es reactivo y no requiere recargar la página.
Condiciones dinámicas: La estructura de la consulta te permite flexibilizar aún más el filtrado, permitiendo usar condicionales para mejorar la personalización en el búsquedas futuras.
¿Qué beneficios aporta Livewire?
Livewire transforma la forma en que las aplicaciones de PHP abordan la interacción del usuario al:
Al implementar estos pasos, podrás ofrecer una experiencia de búsqueda mejorada que es rápida, eficiente y, sobre todo, centrada en el usuario. Asegúrate de personalizar el diseño y lógica según tus necesidades específicas, y explora las capacidades completas de Livewire para obtener el máximo beneficio.
El filtrado de contenido a través de un campo de búsqueda es una herramienta fundamental para mejorar la usabilidad en aplicaciones web. En esta guía, explicaremos cómo implementarlo utilizando un diseño limpio, propiedades adecuadas, y consultas efectivas en el backend. Esto nos permitirá obtener resultados en tiempo real sin necesidad de recargar la página, elevando así la experiencia del usuario.
Lo primero es crear un formulario con el estilo deseado, que servirá como el cuadro de búsqueda en nuestra vista. Aquí te mostramos cómo hacerlo:
<form class="search-form">
<input
class="bg-gray-800 border-none rounded-md w-1/3 p-2 text-white text-sm"
placeholder="Buscar..."
/>
</form>
bg-gray-800), texto blanco (text-white), un ancho de un tercio (w-1/3), sin bordes (border-none) y esquinas redondeadas (rounded-md).Para que el campo de búsqueda interactúe dinámicamente con tus datos, es necesario conectarlo a una propiedad Livewire. Sigue estos pasos:
Crear la propiedad en el componente de Livewire:
public $search = '';
Aquí hemos registrado una propiedad $search que inicialmente está vacía.
Vinculación: Asegúrate de que el input esté ligado a esta propiedad para que su valor se actualice conforme el usuario escribe.
Una vez listo el diseño y la propiedad vinculada, el siguiente paso es ajustar la consulta en tu componente:
Utilizar la cláusula WHERE y LIKE:
public function updatedSearch()
{
$results = Model::where('title', 'like', '%' . $this->search . '%')->get();
}
Este ejemplo ejecuta una consulta cada vez que search cambia, filtrando por títulos que contengan el texto ingresado. Gracias a Livewire, este proceso es reactivo y no requiere recargar la página.
Condiciones dinámicas: La estructura de la consulta te permite flexibilizar aún más el filtrado, permitiendo usar condicionales para mejorar la personalización en el búsquedas futuras.
Livewire transforma la forma en que las aplicaciones de PHP abordan la interacción del usuario al:
Al implementar estos pasos, podrás ofrecer una experiencia de búsqueda mejorada que es rápida, eficiente y, sobre todo, centrada en el usuario. Asegúrate de personalizar el diseño y lógica según tus necesidades específicas, y explora las capacidades completas de Livewire para obtener el máximo beneficio.
A mi me funcionó con Livewire 3 haciendo esto:
<input
type="text" placeholder="// ..."
class="bg-slate-800 border-0 rounded-md w-1/3 p-3 text-white/60 text-xs"
wire:model.live="search"
>
wire:model.live me solucionó el tema
En Livewire 3 no quería enviara cada letra para buscar entonces encontré wire:model.live.debounce.250ms
cuando se utiliza wire:model.live, Livewire agrega un rebote de 150 milisegundos a las actualizaciones del servidor.Esto significa que si un usuario escribe continuamente, Livewire esperará hasta que el usuario deje de escribir durante 150 milisegundos antes de enviar una solicitud.
<input
type="text"
placeholder="// ..."
class="bg-slate-800 border-0 rounded-md w-1/3 p-3 text-white/60 text-xs"
wire:model.live.debounce.250ms="search"
>
```Entonces cambie el tiempo a 250 y con esto puedo enviar mas letras a buscar y son menos peticiones al servidor, si encuentran otra idea me gustaría verla para no enviar letra a letra.
Form Liveware v3.0

En los formularios usando livewire no es necesario agregar la directiva @csrf?
A Alguien le ocurre que no funciona para nada el buscador.
Para mejorar el buscador hice lo siguiente:
Para los que nacimos en Jquery esto te explota la cabeza, es a lo que llamamos programación declarativa.
Me parece que la propiedad $search debe estar definida como plublic para estar disponible tambien en la vista.
Creó que necesito otro curso de eloquent, no habia visto query, de hecho siempre me voy más por QueryBuilder pq me parece cercano a SQL, es dificil dejar las raices y dar paso adelante pero vamos.
Para los que les pueda salir un error al querer escribir en el input . en los routes > web Colocar lo siguiente . Esto suele pasa con las versiones posteriores a la 3
Livewire::setUpdateRoute(function ($handle) { return Route::post('/forum/public/livewire/update', $handle);});
estoy usando xampp en linux, y me doy cuenta que siempre que se trabaja con livewire es necesario crear un virtual host en vez de solo localhost, ademas si esta usando breeze es necesario borrar las lineas donde se importa alpinejs en resources/js/app.js sino no funcionara la vinculacion entre el input y la variable