В пользовательской пагинации в Laravel 5.6 все еще есть ошибка? - PullRequest
0 голосов
/ 01 июля 2018

Я использую класс LengthAwarePaginator, чтобы «преобразовать» коллекцию в объект paginator. Все работает как шарм, но мне нужно обязательно поменять имя страницы нумерации страниц. Когда я использую метод setPageName () - имя страницы внутри URL меняется с «страницы» по умолчанию на все, что мне нужно, но ссылки нумерации страниц вообще не работают - при нажатии содержимое следующей страницы не отображается, даже URL имеет его пользовательское имя страницы для нумерации страниц.

Я везде читал, что раньше это было ошибкой, но теперь утверждается, что она исправлена, хотя и дает ту же ошибку, что и до этого исправления Laravel где-то в версии 5.0.

PS: мне нужно сделать это методом setPageName.

PS2: Если это снова ошибка, почему бы не исправить ее, если мы узнали.

Вот мой код:

Контроллер

$currentPage=LengthAwarePaginator::resolveCurrentPage()-1;
perPage=1;
    // $items is collection variable
$currentPageBlogResults = $items->slice($currentPage * $perPage, $perPage)->all();

$items= new LengthAwarePaginator($currentPageBlogResults, count($items), $perPage);
$items->setPageName('special');
$items->setPath('main-category');

View

@foreach($items as $items)
.....
@endforeach    
{{$items->links()}}

1 Ответ

0 голосов
/ 01 июля 2018

Это не ошибка (наверное). Вы разрешаете текущую страницу с помощью LengthAwarePaginator::resolveCurrentPage(), но у нее есть собственное имя страницы (по умолчанию «страница»). У вас есть два варианта:

$currentPage = LengthAwarePaginator::resolveCurrentPage('special') - 1;

или

LengthAwarePaginator::currentPageResolver(function () {
    return 'special';
});
...