Estoy tratando de crear un sistema de paginación con Laravel. En el lado del backend, devuelvo una respuesta JSON como esta:
if(isset($request->myDate)) { $request->validate([ 'myDate' => 'required|date', ]); $start_date = $request->get('myDate'); $end_date = Carbon::now(); $my_tickets = Ticket::where('admin_id', Auth::user()->id)->whereBetween('updated_at', [$start_date, $end_date])->with(['getAdmin'])->paginate(10); } return json_encode($my_tickets);En el lado frontal, estoy usando una solicitud AJAX para mostrar las filas. Mi pregunta ahora es cómo implementar el sistema de paginación. ¿Hay alguna función incorporada de Laravel o componentes de terceros para simplificar esto? ¿Tengo que construir la parte delantera por mi cuenta? No puedo acceder a $var->links() ya que no es la misma función que devolver la vista.
Saludos
En la respuesta de la interfaz, puede obtener el número de página, un número total de conteos, por página, etc. Si desea usar la paginación ajax personalizada, use el siguiente código en ajax.
var page = '' var count = 0; if (response.total > response.perPage) { if (response.page != 1) { page += '<li class="page-item"><a class="page-link" data-page="' + (response.page - 1) + '" href="#">' + 'Previous' + '</a></li>' } for (i = response.page; i <= response.totalPage; i++) { count++; if (response.page == i) { page += '<li class="page-item active"><a class="page-link" data-page="' + i + '" href="#">' + i + '</a></li>' } else { page += '<li class="page-item"><a class="page-link" data-page="' + i + '" href="#">' + i + '</a></li>' } if (count == 10) break; } $('.number-of-show').append(' Showing ' + ((response.perPage * (response.page - 1)) + 1) + ' to ' + response.perPage * response.page + ' of ' + response.total); $('.pagination').append(page); }en el controlador
$page = ''; if (!empty($data['page'])) { $page = $data['page']; } $params['perPage'] = 500; $params['offset'] = ($page - 1) * $params['perPage']; $withdrawRequestLists = $paramsData['data']; $total = $paramsData['total']; $totalPage = ceil($total / $params['perPage']);