berikut adalah langkah-langkah lebih detail untuk menambahkan pagination ke daftar produk Anda di Laravel:
Langkah 1: Install Paginator
buka file app/Providers/AppServiceProvider.php dan impor Paginator di dalamnya:
use Illuminate\Pagination\Paginator;
Kemudian, dalam metode boot(), tambahkan baris berikut untuk menggunakan Bootstrap sebagai tema pagination:
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Pagination\Paginator;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Paginator::useBootstrap();
}
}
Langkah 2: Menggunakan Pagination di Controller
Di dalam ProductController, ubah metode index() untuk menggunakan metode paginate():
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function index()
{
$products = Product::paginate(5); // Menampilkan 10 produk per halaman
return view('products.index', compact('products'));
}
public function create()
{
return view('products.create');
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'price' => 'required|numeric',
'stock' => 'required|integer',
]);
Product::create($request->all());
return redirect()->route('products.index')->with('success', 'Product created successfully');
}
public function show($id)
{
$product = Product::find($id); // Mengambil produk berdasarkan ID
return view('products.show', compact('product'));
}
public function edit($id)
{
$product = Product::find($id); // Mengambil produk berdasarkan ID
return view('products.edit', compact('product'));
}
public function update(Request $request, $id)
{
$request->validate([
'name' => 'required|string|max:255',
'price' => 'required|numeric',
'stock' => 'required|integer',
]);
$product = Product::find($id);
$product->update($request->all());
return redirect()->route('products.index')->with('success', 'Product updated successfully');
}
public function destroy($id)
{
$product = Product::find($id);
$product->delete();
return redirect()->route('products.index')->with('success', 'Product deleted successfully');
}
// Menampilkan daftar produk
public function list_product()
{
$products = Product::all();
return response()->json($products);
}
// Menampilkan detail produk berdasarkan ID
public function detail_product($id)
{
$product = Product::find($id);
if (!$product) {
return response()->json(['message' => 'Produk tidak ditemukan'], 404);
}
return response()->json($product);
}
// Menyimpan produk baru
public function create_product(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'price' => 'required|numeric',
'stock' => 'required|integer',
]);
Product::create($request->all());
return response()->json(['message' => 'Produk berhasil disimpan'], 201);
}
// Mengupdate produk berdasarkan ID
public function update_product(Request $request, $id)
{
$product = Product::find($id);
if (!$product) {
return response()->json(['message' => 'Produk tidak ditemukan'], 404);
}
$request->validate([
'name' => 'required|string|max:255',
'price' => 'required|numeric',
'stock' => 'required|integer',
]);
$product->update($request->all());
return response()->json(['message' => 'Produk berhasil diupdate'], 200);
}
// Menghapus produk berdasarkan ID
public function delete_product($id)
{
$product = Product::find($id);
if (!$product) {
return response()->json(['message' => 'Produk tidak ditemukan'], 404);
}
$product->delete();
return response()->json(['message' => 'Produk berhasil dihapus'], 200);
}
}
Dalam contoh ini, paginate(10) akan menampilkan 10 produk per halaman. Sesuaikan angka 10 dengan jumlah produk yang ingin Anda tampilkan per halaman.
Langkah 3: Menggunakan Pagination di View
Di dalam file products.index.blade.php, tampilkan daftar produk dan tambahkan elemen pagination:
Pada bagian {{ $products->links() }}, Laravel secara otomatis akan membuat tombol navigasi untuk Anda, memungkinkan pengguna untuk beralih antara halaman-halaman berikutnya dan sebelumnya.
Di bab berikutnya akan belajar cara membuat auth dengan laravel bootstrap Scaffolding di project yang telah dibuat.