Tổng quan về Laravel Pagination
Giới thiệu về Laravel
Laravel là gì? Laravel là một trong những framework phổ biến nhất hiện nay được sử dụng để xây dựng các ứng dụng web. Nó được viết bằng ngôn ngữ PHP và được phát triển bởi Taylor Otwell từ năm 2011. Laravel có nhiều tính năng tiện ích, dễ sử dụng và linh hoạt, giúp cho việc phát triển ứng dụng web nhanh chóng và tiết kiệm thời gian.
Laravel Pagination là gì?
Laravel pagination là một kỹ thuật phân trang cho các kết quả truy vấn từ cơ sở dữ liệu(CSDL), giúp hiển thị các kết quả truy vấn thành từng trang riêng biệt. Khi có nhiều dữ liệu để hiển thị trên một trang duy nhất, phân trang sẽ giúp người dùng dễ dàng quản lý và tìm kiếm thông tin.
Laravel Pagination
Laravel Pagination là một tính năng của framework Laravel, được sử dụng để phân trang dữ liệu trong các ứng dụng web. Nó cung cấp cho người dùng khả năng phân trang các kết quả trả về từ truy vấn CSDL, giúp tối ưu hóa hiệu suất website.
Tại sao lại cần sử dụng Laravel Pagination?
Trong khi hiển thị dữ liệu lên website, nếu có quá nhiều kết quả trả về từ truy vấn CSDL, việc hiển thị toàn bộ các kết quả trên một trang duy nhất sẽ làm cho trang web của bạn trở nên chậm và khó sử dụng. Điều này cũng sẽ gây ra tải nặng cho Server và làm giảm trải nghiệm người dùng.
Laravel Pagination giúp giải quyết vấn đề này bằng cách phân trang dữ liệu và hiển thị các kết quả trên từng trang riêng biệt. Điều này giúp tối ưu hóa hiệu năng website, giảm tải cho Server và tăng tốc độ tải trang.
Cách sử dụng Laravel Pagination
Cài đặt Laravel
Để sử dụng Laravel Pagination, trước tiên bạn cần cài đặt framework Laravel. Bạn có thể cài đặt Laravel bằng cách sử dụng Composer hoặc tải xuống phiên bản mới nhất từ trang web chính thức của Laravel.
Sử dụng Laravel Pagination
Sau khi cài đặt Laravel và xây dựng CSDL, bạn có thể sử dụng Laravel Pagination để phân trang dữ liệu. Để làm điều này, bạn có thể sử dụng các phương thức của Laravel Pagination trong truy vấn CSDL.
Ví dụ, để phân trang các bản ghi trong bảng users
, bạn có thể sử dụng phương thức paginate()
như sau:
$users = DB::table('users')->paginate(10);
Trong đoạn mã trên, phương thức paginate()
được sử dụng để phân trang dữ liệu trong bảng users
và hiển thị mỗi trang 10 bản ghi.
Hiển thị dữ liệu phân trang
Sau khi phân trang dữ liệu bằng Laravel Pagination, bạn có thể hiển thị các kết quả trên từng trang riêng biệt. Để làm điều này, bạn có thể sử dụng các phương thức của Laravel Pagination trong view của mình.
Ví dụ, để hiển thị danh sách các bản ghi trong bảng users
, bạn có thể sử dụng vòng lặp foreach
như sau:
@foreach ($users as $user)
<p>{{ $user->name }}</p>
@endforeach
Trong đoạn mã trên, vòng lặp foreach
được sử dụng để lặp qua danh sách các bản ghi trong biến $users
và hiển thị tên của mỗi người dùng.
Ngoài ra, bạn có thể sử dụng các phương thức của Laravel Pagination để hiển thị các liên kết phân trang và các thông tin về trang hiện tại. Ví dụ:
{{ $users->links() }}
<p>Trang hiện tại: {{ $users->currentPage() }}</p>
<p>Tổng số trang: {{ $users->lastPage() }}</p>
<p>Tổng số bản ghi: {{ $users->total() }}</p>
Trong đoạn mã trên, phương thức links()
được sử dụng để hiển thị các liên kết phân trang. Các phương thức currentPage()
, lastPage()
và total()
được sử dụng để hiển thị thông tin về trang hiện tại, tổng số trang và tổng số bản ghi.
Hoặc đơn giản hơn bạn có thể sử dụng:
{!! $users->appends(request()->all()->links() !!}
Ví dụ cụ thể
Để minh họa cách sử dụng Laravel Pagination, chúng ta hãy xem xét một ví dụ đơn giản về phân trang các bản ghi trong bảng products
.
Trước tiên, chúng ta cần xây dựng CSDL và tạo một số bản ghi trong bảng products
. Để làm điều này, chúng ta có thể sử dụng tệp Migration của Laravel và Seeder.
Sau khi tạo bảng products
, chúng ta có thể sử dụng Laravel Pagination để phân trang các bản ghi trong bảng này.
public function index()
{
$products = DB::table('products')->paginate(10);
return view('products.index', ['products' => $products]);
}
Trong đoạn mã trên, phương thức paginate()
được sử dụng để phân trang các bản ghi trong bảng products
và hiển thị mỗi trang 10 bản ghi. Biến $products
được truyền vào view để hiển thị danh sách các bản ghi.
Tiếp theo, chúng ta cần hiển thị danh sách các bản ghi và các liên kết phân trang trong view products.index
.
@extends('layouts.app')
@section('content')
<div class="container">
<h1>Danh sách sản phẩm</h1>
@foreach ($products as $product)
<div class="card mb-3">
<div class="card-body">
<h5 class="card-title">{{ $product->name }}</h5>
<p class="card-text">{{ $product->description }}</p>
<p class="card-text">Giá: {{ $product->price }}</p>
</div>
</div>
@endforeach
{{ $products->links() }}
</div>
@endsection
Trong đoạn mã trên, vòng lặp foreach
được sử dụng để lặp qua danh sách các bản ghi trong biến $products
và hiển thị tên, mô tả và giá của mỗi sản phẩm. Phương thức links()
được sử dụng để hiển thị các liên kết phân trang.
Cuối cùng, chúng ta đã tạo thành công một trang web đơn giản cho việc phân trang các bản ghi trong bảng products
bằng Laravel Pagination.
customize Laravel pagination
Laravel pagination mặc định sẽ sử dụng kiểu phân trang với view sử dụng bootstrap nhưng từ laravel 8 trở đi thì bootstrap không còn được hỗ trợ, nhưng trong một số trường hợp bạn cần customize lại pagination này để phù hợp hơn với dự án thì cách sau đây sẽ giúp bạn customize lại pagination.
Để sửa lại view của pagination:
// Mở terminal và gõ lệnh
php artisan vendor:publish
Sau khi thực hiện command trên sẽ hiển thị danh sách như bên dưới bạn chỉ cần kiếm đến laravel-pagination và nhập số 40 phía dưới terminal là được.
Ở các phiên bản mới của Laravel thì mặc định framework sẽ không còn sử dụng bootstrap nữa, nhưng nếu bạn vẫn thích sử dụng bootstrap cho pagination view thì hãy vào provinders và bên phương thức bên dưới vào boot().
public function boot()
{
Paginator::useBootstrap();
}
Kết luận
Laravel Pagination là một công cụ mạnh mẽ cho việc phân trang dữ liệu trong Laravel. Nó giúp cho việc hiển thị dữ liệu trên nhiều trang trở nên dễ dàng và tiện lợi hơn. Với Laravel Pagination, bạn có thể phân trang dữ liệu một cách đơn giản và hiệu quả, giúp cho ứng dụng của bạn trở nên chuyên nghiệp và dễ sử dụng hơn.
Tham khảo thêm:
Laravel là gì? Ưu và nhược điểm của Laravel
Laravel collection - Tìm hiểu về collection trong Laravel