Lumen - метод ссылок на страницы () не работает - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать постраничный набор результатов в Lumen.Я не использую коллекцию базы данных, вместо этого это коллекция массивов.

Мне удалось отобразить результаты, однако у меня возникла проблема с использованием метода pagination links ().Вот что у меня есть:

PHP:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;

class AppController extends Controller
{
    public function index(Request $request)
    {
        $items = [
            'item1',
            'item2',
            'item3',
            'item4',
        ];

        $collection = collect($items);

        $currentPage = LengthAwarePaginator::resolveCurrentPage();
        $perPage = 2;
        $offset = ($currentPage * $perPage) - $perPage;

        $currentPageResults = $collection->slice($offset, $perPage)->all();

        $paginatedItems = new LengthAwarePaginator($currentPageResults, count($collection), $perPage);

        $paginatedItems->setPath($request->url());

        return view('index', [
            'results' => $paginatedItems,
        ]);
    }
}

Просмотр:

<ul>
    @foreach ($results as $result)
        <li>{{ $result }}</li>
    @endforeach
</ul>

<div>
    {{ $results->links() }}
</div>

Я получаю ошибку:

call_user_func () ожидает, что параметр 1 будет допустимым обратным вызовом, без указания массива или строки

Если я удалю $results->links(), я не получу ошибку.

Когда я dd($paginationItems) Я получаю обратно действительный LengthAwarePaginator объект:

enter image description here

1 Ответ

0 голосов
/ 12 ноября 2018

Я нашел ответ:

В пределах bootstrap/app.php есть строка кода, закомментированная по умолчанию:

// $app->withEloquent();

Это необходимо раскомментировать дляметод pagination links () для работы.

...