Paginator Helper
Khi làm việc với các dữ liệu lớn trong ứng dụng web, việc phân trang là rất quan trọng để cải thiện hiệu suất và trải nghiệm người dùng. Trong Laravel, bạn có thể dễ dàng sử dụng Paginator
để phân trang các dữ liệu. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng helper phân trang trong Laravel để hiển thị phân trang hiệu quả.

1. Cấu hình phân trang trong Laravel
Để bắt đầu, Laravel hỗ trợ hai phương pháp chính để phân trang dữ liệu: paginate()
và simplePaginate()
. Phương thức paginate()
giúp phân trang với đầy đủ thông tin, trong khi simplePaginate()
chỉ cung cấp các nút tiếp theo và trước.
Ví dụ về phương thức paginate()
:
$lessons = Lesson::paginate(10); // Phân trang 10 bài học mỗi trang
2. Hiển thị phân trang trong Blade Template
Sau khi đã truy vấn dữ liệu với phân trang, bạn cần hiển thị các liên kết phân trang trong view của mình. Để làm điều này, Laravel cung cấp phương thức links()
.
<div class="pagination">
{{ $lessons->links() }}
</div>
Phương thức links()
sẽ tự động tạo các liên kết phân trang. Laravel hỗ trợ một số giao diện có sẵn như bootstrap
, tailwind
hoặc bạn có thể tùy chỉnh giao diện theo ý thích.
3. Tùy chỉnh giao diện phân trang
Bạn có thể thay đổi giao diện phân trang theo framework CSS mà bạn đang sử dụng. Ví dụ, nếu bạn đang sử dụng Bootstrap, bạn có thể cấu hình kiểu phân trang trong file AppServiceProvider
:
use Illuminate\Pagination\Paginator;
public function boot()
{
Paginator::useBootstrap();
}
Laravel cũng hỗ trợ các template phân trang tùy chỉnh. Bạn có thể tạo một file blade tùy chỉnh để định nghĩa lại cách hiển thị phân trang.
4. Tùy chỉnh liên kết phân trang
Để tùy chỉnh liên kết phân trang, bạn có thể làm như sau:
<div class="pagination">
{{ $lessons->appends(request()->except('page'))->links() }}
</div>
Dòng code trên sẽ giữ lại các tham số tìm kiếm trong URL khi người dùng chuyển trang.
5. Phân trang với các tham số tìm kiếm
Khi bạn sử dụng phân trang cùng với các bộ lọc hoặc tìm kiếm, bạn có thể kết hợp với phương thức appends()
để giữ lại các tham số tìm kiếm trong URL khi người dùng chuyển trang.
Ví dụ:
$lessons = Lesson::where('category', $category)
->where('title', 'like', "%$search%")
->paginate(10);
return view('lessons.index', compact('lessons'));
Và trong view, bạn có thể giữ lại các tham số tìm kiếm khi hiển thị phân trang:
<div class="pagination">
{{ $lessons->appends(['category' => $category, 'search' => $search])->links() }}
</div>
Kết luận
Laravel cung cấp một công cụ phân trang rất mạnh mẽ và dễ sử dụng. Bạn có thể tùy chỉnh giao diện phân trang và giữ lại các tham số tìm kiếm khi chuyển trang. Điều này sẽ giúp cải thiện trải nghiệm người dùng và tạo ra các ứng dụng web mượt mà hơn.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com