Вопрос:

Laravel 5 - Ручная разбивка на страницы

laravel pagination laravel-5 laravel-pagination

9797 просмотра

5 ответа

1748 Репутация автора

Pagination::make() метод больше не существует в классе Pagination в Laravel 5.

Существует ли временное решение для ручной работы с страницами в Laravel 5?

Автор: aBhijit Источник Размещён: 30.11.2014 12:54

Ответы (5)


25 плюса

69467 Репутация автора

Решение

Вам нужно добавить использование:

use Illuminate\Pagination\LengthAwarePaginator as Paginator;

и теперь вы можете использовать:

 $paginator = new Paginator($items, $count, $limit, $page, [
            'path'  => $this->request->url(),
            'query' => $this->request->query(),
        ]);

получать данные в том же формате, что и разбиение на страницы объекта модели;

Автор: Marcin Nabiałek Размещён: 18.12.2014 12:37

-5 плюса

65 Репутация автора

Другой способ использования разбивки на страницы будет следующим:

public function index()
{
    $posts = DB::table('posts')->paginate(15);
}
Автор: n31l Размещён: 10.11.2016 04:12

0 плюса

9 Репутация автора

Вы можете создать ручную разбивку на страницы следующим образом:

$data = DB::table('post')->skip(0)->take(20)->get();

Автор: Naresh Suman Размещён: 20.12.2016 08:00

0 плюса

11 Репутация автора

Попробуйте ввести код для ручной разбивки на страницы

<?php

namespace App\Http\Controllers;

use Illuminate\Pagination\LengthAwarePaginator as Paginator;
// use Illuminate\Pagination\Paginator;
use Illuminate\Http\Request;
use App\Product;
class MyController extends Controller
{
    public function index(Request $request){
        $items = Product::all();

        $filter_products = []; // Manual filter or your array for pagination

        foreach($items as $item){
            if($item['id']>40 && $item['id']<50){
                array_push($filter_products, $item);
            }
        }

        $count = count($filter_products); // total product for pagination
        $page = $request->page; // current page for pagination

        // manually slice array of product to display on page
        $perPage = 5;
        $offset = ($page-1) * $perPage;
        $products = array_slice($filter_products, $offset, $perPage);

        // your pagination 
        $products = new Paginator($products, $count, $perPage, $page, ['path'  => $request->url(),'query' => $request->query(),]);
        // use {{ $products->appends($_GET)->links() }} to dispaly your pagination
        return view('index',['products' => $products]);
    }
}
Автор: Sangeet Размещён: 20.04.2018 12:57

0 плюса

567 Репутация автора

Довольно простой пример этого класса

 use Illuminate\Pagination\LengthAwarePaginator as Paginator;
 //...
 $paginator = new Paginator($items->forPage($page, $limit), $count, $limit, $page, [
            'path'  => Paginator::resolveCurrentPath()
        ]);

Примечание. items Должен быть Collectionобъект.

Автор: Goms Размещён: 13.06.2018 07:12
Вопросы из категории :
32x32