Fitur pencarian dan pagination sangat dibutuhkan saat data sudah banyak, seperti dalam sistem produk, pelanggan, transaksi, dll. Dengan Laravel, implementasi fitur ini sangat efisien menggunakan query builder atau Eloquent.
π― Tujuan Part Ini
- Menerapkan pagination pada halaman data produk
- Menambahkan fitur pencarian produk berdasarkan nama
- Menjaga performa dan UX saat data bertambah
π§± Struktur Awal: Model Produk
Sudah dibuat pada part sebelumnya:
protected $fillable = ['nama', 'harga', 'foto'];
π§ 1. Routing
Tidak perlu tambahan route baru. Gunakan route produk.index:
Route::resource('produk', ProdukController::class);
π οΈ 2. Tambahkan Fitur Pencarian di Controller
Edit ProdukController.php, method index():
public function index(Request $request)
{
$keyword = $request->get('cari');
$produk = Produk::when($keyword, function ($query) use ($keyword) {
$query->where('nama', 'like', "%$keyword%");
})->orderBy('id', 'desc')->paginate(5);
return view('produk.index', compact('produk', 'keyword'));
}
π₯οΈ 3. Tambahkan Form Pencarian & Pagination di View
a. Form Pencarian
Tambahkan di bagian atas index.blade.php:
<form action="{{ route('produk.index') }}" method="GET">
<input type="text" name="cari" value="{{ request('cari') }}" placeholder="Cari produk...">
<button type="submit">Cari</button>
</form>
b. Tampilkan Data + Pagination
@foreach($produk as $p)
<tr>
<td>{{ $p->nama }}</td>
<td>{{ $p->harga }}</td>
<td>
@if($p->foto)
<img src="{{ asset('uploads/produk/' . $p->foto) }}" width="60">
@else
<small>-</small>
@endif
</td>
</tr>
@endforeach
c. Link Pagination
<div>
{{ $produk->appends(['cari' => request('cari')])->links() }}
</div>
βοΈ 4. Hasil: UX Lebih Rapi & Performant
- Data hanya ditampilkan per 5 entri (paginate)
- User bisa mencari produk berdasarkan nama
- Halaman tetap ringan & cepat meski data banyak
π Tips SEO & UX
| Aspek | Rekomendasi |
|---|---|
| URL ramah mesin | Gunakan query string seperti ?cari=produkA&page=2 |
| Pagination UX | Gunakan Tailwind/Bootstrap untuk tampilan yang rapi |
| Search Realtime | Gunakan AJAX atau Livewire (lanjutan fitur) |
π§° Elektra Network Vision β Solusi Laravel CRUD, Filter & Search
Kami bantu Anda:
- Membangun panel admin Laravel lengkap
- Optimasi fitur search + filter dinamis
- Integrasi frontend modern (Livewire, Vue, AJAX)
π elektranetworkvision.com β Spesialis Laravel & sistem manajemen data profesional untuk bisnis Anda.
