Paginator Helper

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 18 tháng 1, 2025

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()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.

Website Logo

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.

Bình luận

Website Logo

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

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ