Пользовательские ссылки на страницы Laravel не работают - PullRequest
0 голосов
/ 01 июля 2018

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

Ситуация следующая: Я получаю объект Eloquent, а затем сортирую его и выполняю некоторый процесс, в результате чего я преобразую его в две отдельные коллекции.

Теперь у меня есть две коллекции, которые я передал "Lengthawarepaginator" - и добавил название нумерации страниц для каждой из них методом "setPageName()". (Я должен сделать это с помощью пользовательского paginate, так как я работаю с ними, поэтому более конкретный запрос Eloquent исключен).

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

Но ссылки на страницы не работают при правильном отображении:

Когда я нажимаю на страницу 2,3,4 и т. Д., Несмотря на то, что отображается правильная страница нумерации страниц, ссылка нумерации страниц ВСЕГДА остается под номером один - как если бы она отображала первую страницу нумерации страниц (даже для пример 2,3,4 и т. д. результатов страницы разбиения на страницы). Проще говоря, ссылки нумерации страниц не следуют за соответствующей страницей показанной страницы. Кроме того, ссылка на страницу 1 нумерации страниц вообще не активна.

Вот код моего контроллера:

    $currentPage=LengthAwarePaginator::resolveCurrentPage('popular')-1;
    $perPage=10;
    $currentPageBlogResults = $items1->slice($currentPage * $perPage, $perPage)->all();
    $items1= new LengthAwarePaginator($currentPageBlogResults, count($items1), $perPage);
    $items1->setPath('offers');
    $items1->setPageName('popular');


    $currentPage=LengthAwarePaginator::resolveCurrentPage('highlow')-1;
    $perPage=10;
    $currentPageBlogResults = $items2->slice($currentPage * $perPage, $perPage)->all();
    $items2= new LengthAwarePaginator($currentPageBlogResults, count($items2), $perPage);
    $items2->setPath('offers');
    $items2->setPageName('highlow');

Для просмотра: я просто перебираю результаты с помощью foreach, а под каждым я просто echo нумерация страниц, например: {{$items1->links() }} и {{$items2->links () }}

Есть предложения?

1 Ответ

0 голосов
/ 14 мая 2019
$pageNumber  = (!empty($request->p))? $request->p : 1;
$perPage     = 16;
$offset      = ($pageNumber - 1) * $perPage;

$binding = [];
$binding['status'] = 1;
$sqlQuery  = 'SELECT * FROM TABLE_NAME status= :status';

$sql_count = 'SELECT count(1) as total_records FROM ('. $sqlQuery . ') searchedData';
$result = DB::select($sql_count,$binding);
$resultCount = $result[0]->total_records;

$sqlQuery .= ' LIMIT ' . $offset . ', ' . $perPage;
$searchResult = DB::select($sqlQuery,$binding);
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($searchResult, $resultCount, $perPage, $pageNumber);
$paginator->setPath(route('search'));
$paginator->setPageName("p");

Передать номер текущей страницы в методе, в приведенном выше примере я передал $ pageNumber.

...