+1

Pagination trong Laravel

Giới thiệu

Trong các framework mà tôi từng làm việc, tôi cảm nhận thấy laravel hỗ trợ việc phân trang rất đơn giản, nhanh gọn mà lại phù hợp với công nghệ hiện thời. Việc tích hợp và sử dụng phân trang trong laravel khá dễ dàng, Laravel có thể tạo nhanh chóng phạm vi link của các trang hiện tại và các trang lân cận, cũng như việc tạo các trang HTML phù hợp và tương thích với Bootstrap CSS framework..

Cấu hình

Trong Laravel 5 việc cấu hình phần phân trang ta thêm trong file config/view.php như sau:

<?php
return array(
    ...
    'pagination' => 'pagination::slider-3',
);

– Theo mặc định là laravel có 2 kiểu phân trang sau:

  • pagination::slide Phương thức này sẽ cho chúng ta hiển thị các link phần trang đầy đủ
  • pagination::simple Phương thức này phân trang dưới link đơn giản chỉ có nút Next và Previous

Các cách phân trang trong laravel

Giả sử với tập dữ liệu mẫu về các thương hiệu thời trang trên thế giới như sau:

pagination_1.png

Để phân trang với Laravel là điều cực kì đơn giản, thay vì bạn phải $brands = Brand::all() lấy toàn bộ bản ghi của Brand thì bạn chỉ cần lấy phân trang và lấy theo 10 bản ghi

// Sử dụng Eloquent Model
$brands = Brand::paginate(10);

// Sử dụng Query Builder
$brands = DB::table('brands')->paginate(10);

Trong một số trường bạn đã có sẵn dữ liệu mà không phải lấy từ csdl thì bạn có thể phân trang theo cách thủ công thông qua phương thức Paginator::make,ví dụ:

$paginator = Paginator::make($brands, $totalBrand, $perPage);

// Bạn có thể thay đổi được đường dẫn link của các trang đã phân như sau:

$brands = Brand::paginate();
$brands->setBaseUrl('custom/url');

Khi đó link của trang sẽ có dạng:

http://example.com/custom/url?page=2

Hay là bạn cũng có thể phân trang dữ liệu đơn giản chỉ có nút NextPrevious bằng cách sử dụng $brands = Brand::simplePaginate(10);

Trên view để hiển thị link phân trang thì điều tiên quyết chúng ta phải chèn {{ $brands->links(); }} vào trong view.

Sau đó ta có thành quả như sau:

pagination_2.png

Một số tiện ích khác

Laravel cung cấp cho chúng các phương thức để thao tác và tùy chỉnh với việc phân trang dữ liệu:

  • getCurrentPage
  • getLastPage
  • getPerPage
  • getTotal
  • getFrom
  • getTo
  • count

Tài liệu tham khảo

Pagination Laravel 4.2

Blog tutotial create pagination

working-pagination-laravel-4


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí