2013-06-30 42 views
5

Tôi đang cố gắng "ghi nhớ" trang mà người dùng đang truy cập khi duyệt qua các bản ghi để khi quay trở lại danh sách, anh ta được đưa trở lại trang nơi anh ta rời đi.Chỉ định một trang để phân trang - Laravel 4

Làm cách nào để thay đổi giá trị "trang hiện tại" cho người tạo trang?

Tôi đã thử nhập :: set ('page', $ x); nhưng không có chức năng như vậy. $ _GET ['page'] = $ x; cũng không hoạt động.

này mã:

$list = Publication::orderBy($this->data['sort_by'], $this->data['order_by']); 

foreach ($this->data['filter_data'] AS $field => $value) { 
    $list->where($field, 'LIKE', "%$value%"); 
} 

$this->data['list'] = $list->paginate(15); 

Trả lời

4

Bạn có thể điều chỉnh trang môi trường pagination thông qua kết nối DB.

DB::getPaginator()->setCurrentPage(2); 

Không hoàn toàn chắc chắn nhưng bạn có thể xem qua mô hình của mình bằng thứ gì đó như thế này.

Publication::getConnection()->setCurrentPage(2); 

Nếu thông tin bên trên không hoạt động (có vẻ như bình luận của bạn), hãy thực hiện với ví dụ Publication.

$publication = new Publication; 

$publication->getConnection()->setCurrentPage(2); 

$list = $publication->orderBy(...); 
+0

Cả hai đều không hoạt động, tôi nhận được lỗi "Gọi đến undefined method" và "Phương thức không tĩnh xxx :: getConnection() nên không được gọi là tĩnh, giả sử $ điều này từ ngữ cảnh không tương thích "lỗi – wyred

+1

Woops, câu trả lời được cập nhật. Đó nên là 'DB :: getPaginator() -> setCurrentPage(); ' –

+0

Nó hoạt động, cảm ơn! – wyred

0

Hãy thử

$pager->setCurrentPage(2); 
+0

Tôi đang sử dụng Eloquent, nhưng có vẻ như phương pháp này không tồn tại – wyred

21

Tôi nhìn API --- Hóa ra đây là dễ dàng hơn nhiều bây giờ trong năm 2014.

Tất cả bạn phải làm là thiết lập

Paginator::setCurrentPage(2); 

bất cứ lúc nào trước khi bạn gọi ->paginate(), Tôi tin, và nó sẽ ghi đè lên bộ trang (hoặc không được thiết lập) bởi ?page=.

+1

Đó phải là câu trả lời được chấp nhận;) –