Fhernd

buscar-productos.blade.php

Jun 2nd, 2026
8,565
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.44 KB | Source Code | 0 0
  1. <?php
  2.  
  3. use App\Models\Producto;
  4. use Livewire\Attributes\Computed;
  5. use Livewire\Component;
  6.  
  7. new class extends Component
  8. {
  9.     public string $busqueda = '';
  10.  
  11.     #[Computed]
  12.    public function productos()
  13.     {
  14.         return Producto::query()
  15.             ->when(
  16.                 $this->busqueda !== '',
  17.                 fn ($query) => $query->where('nombre', 'like', '%'.$this->busqueda.'%')
  18.             )
  19.             ->orderBy('nombre')
  20.             ->get();
  21.     }
  22. };
  23. ?>
  24.  
  25. <div class="w-full max-w-2xl mx-auto">
  26.     <h1 class="text-2xl font-semibold mb-6 text-[#1b1b18] dark:text-[#EDEDEC]">Buscar productos</h1>
  27.  
  28.     <label for="busqueda" class="block text-sm font-medium mb-2 text-[#706f6c] dark:text-[#A1A09A]">
  29.         Nombre del producto
  30.     </label>
  31.     <input
  32.         id="busqueda"
  33.         type="search"
  34.         wire:model.live.debounce.300ms="busqueda"
  35.         placeholder="Ej: laptop, mouse..."
  36.         class="w-full px-4 py-2 mb-6 rounded-sm border border-[#e3e3e0] dark:border-[#3E3E3A] bg-white dark:bg-[#161615] text-[#1b1b18] dark:text-[#EDEDEC] focus:outline-none focus:border-[#f53003] dark:focus:border-[#FF4433]"
  37.     />
  38.  
  39.     <div wire:loading class="text-sm text-[#706f6c] dark:text-[#A1A09A] mb-4">
  40.         Buscando...
  41.     </div>
  42.  
  43.     @if ($this->productos->isEmpty())
  44.         <p class="text-[#706f6c] dark:text-[#A1A09A]">
  45.             @if ($busqueda === '')
  46.                 No hay productos en la base de datos.
  47.             @else
  48.                 No se encontraron productos para «{{ $busqueda }}».
  49.             @endif
  50.         </p>
  51.     @else
  52.         <ul class="divide-y divide-[#e3e3e0] dark:divide-[#3E3E3A] border border-[#e3e3e0] dark:border-[#3E3E3A] rounded-sm overflow-hidden">
  53.             @foreach ($this->productos as $producto)
  54.                 <li class="flex items-center justify-between gap-4 px-4 py-3 bg-white dark:bg-[#161615]">
  55.                     <span class="font-medium text-[#1b1b18] dark:text-[#EDEDEC]">{{ $producto->nombre }}</span>
  56.                     <span class="text-sm text-[#706f6c] dark:text-[#A1A09A] tabular-nums">
  57.                         ${{ number_format($producto->precio, 0, ',', '.') }}
  58.                     </span>
  59.                 </li>
  60.             @endforeach
  61.         </ul>
  62.         <p class="mt-3 text-sm text-[#706f6c] dark:text-[#A1A09A]">
  63.             {{ $this->productos->count() }} {{ $this->productos->count() === 1 ? 'producto' : 'productos' }}
  64.         </p>
  65.     @endif
  66. </div>
  67.  
Advertisement