Selanjutnya kita akan membuat tutorial, tentang pencarian produk di halaman frontend. Pencarian ini memungkinkan user untuk melakukan pencarian produk. Berikut langkah-langkah nya:

Namun sebelumnya, silahkan mengikuti langkah sebelumnya tentang Membuat halaman Order User

Langkah 1: Update Route

Tambahkan route untuk fitur pencarian produk di routes/web.php:

use App\Http\Controllers\Frontend\ProductController;

Route::get('/search', [FrontendController::class, 'search'])->name('frontend.search');

Langkah 2: Update Controller

Tambahkan method search di ProductController untuk menangani pencarian.

ProductController.php

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use App\Models\Category;
use Illuminate\Http\Request;

class FrontendController extends Controller
{
    public function search(Request $request)
    {
        $categories = Category::all();

        $query = $request->input('query');
        $products = Product::where('name', 'like', '%' . $query . '%')
            ->orWhere('description', 'like', '%' . $query . '%')
            ->get();

        return view('frontend.search', compact('products', 'query','categories'));
    }
}

Langkah 3: Tambahkan Form Pencarian di Navbar

Tambahkan form pencarian di file layout frontend, misalnya layouts/frontend.blade.php.

Navbar dengan Form Pencarian

 <!-- Navbar -->
    <nav class="navbar navbar-expand-lg navbar-dark">
        <div class="container">
            <a class="navbar-brand" href="{{ route('home') }}">MyCommerce</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarNav">
                <ul class="navbar-nav ms-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="{{ route('home') }}">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">About Us</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Contact</a>
                    </li>
                    <!-- Dropdown for categories -->
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" id="categoriesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                            Categories
                        </a>
                        <ul class="dropdown-menu" aria-labelledby="categoriesDropdown">
                            @foreach ($categories as $category)
                                <li><a class="dropdown-item" href="{{ route('category.show', $category->slug) }}">{{ $category->name }}</a></li>
                            @endforeach
                        </ul>
                    </li>
                    <div class="ml-auto">
            @guest
                <a href="{{ route('login') }}" class="btn btn-outline-primary">Login</a>
            @else
            <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="categoriesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Hi, {{ Auth::user()->name }}
                </a>
                <ul class="dropdown-menu" aria-labelledby="categoriesDropdown">
                    <li><a class="dropdown-item" href="{{ route('user.orders') }}">My Orders</a></li>
                    <li><a href="{{ route('logout') }}" class="btn btn-outline-danger"
                    onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
                        Logout
                    </a>
                    <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                        @csrf
                    </form></li>
                </ul>
            </li>
                
            @endguest
        </div>
                </ul>
                 <!-- Search Form -->
                 <form action="{{ route('frontend.search') }}" method="GET" class="d-flex">
                    <input class="form-control me-2" type="search" name="query" placeholder="Search products..." aria-label="Search">
                    <button class="btn btn-outline-success" type="submit">Search</button>
                </form>
            </div>
        </div>
    </nav>

Langkah 4: Buat View untuk Hasil Pencarian

Buat file view frontend/search.blade.php untuk menampilkan hasil pencarian.

search.blade.php

@extends('layouts.frontend')

@section('content')
<div class="container my-4">
    <h1>Search Results for "{{ $query }}"</h1>
    @if ($products->isEmpty())
        <p class="text-muted">No products found.</p>
    @else
        <div class="row">
            @foreach ($products as $product)
                <div class="col-md-4 mb-4">
                    <div class="card">
                        <img src="{{ asset('storage/' . $product->image) }}" class="card-img-top" alt="{{ $product->name }}">
                        <div class="card-body">
                            <h5 class="card-title">{{ $product->name }}</h5>
                            <p class="card-text">${{ number_format($product->price, 2) }}</p>
                            <a href="{{ route('product.show', $product->slug) }}" class="btn btn-primary">View Product</a>
                        </div>
                    </div>
                </div>
            @endforeach
        </div>
    @endif
</div>
@endsection

Langkah 5: Styling (Optional)

Tambahkan CSS untuk memperindah tampilan pencarian.

CSS untuk Search

Tambahkan di file CSS utama Anda (misalnya, public/css/app.css):

.navbar .form-control {
    width: 300px;
    transition: width 0.4s ease-in-out;
}

.navbar .form-control:focus {
    width: 400px;
}

Langkah 6: Testing

Navigasi ke Website: Akses halaman frontend Anda.

Search

Coba Cari Produk: Masukkan nama produk di form pencarian dan tekan tombol Search.

Lihat Hasilnya: Pastikan produk yang sesuai dengan query ditampilkan.

search result