My view calls a JavaScript function to submit a post to a controller, which in turn generates an array and returns a pagination object based on the array. I used Paginator::make, which is working. But I want an "intelligent" range of pages on the returned object.
My JavaScript code is listed below:
$('form#form-retrieve-data').submit(function(){
$.post(
'mysite.com/retrieve', //route for the action page
{
"_token": $( this ).find( 'input[name=_token]' ).val(),
'from-date': '2016-04-01',
'to-date': '2016-04-15',
'per-page': 20,
'page-number': 1
},
function(data){
var current_page = data.current_page;
var retrieve_data = data.data;
var start_page = data.from; //first page of the page range
var last_page = data.last_page; //last page of the page range
var per_page = data.per_page;
$.each(retrieve_data, function(i, val){
//handle each retrive data hare
}
for(var i = start_page; i <= last_page; i++){
//create the page links here
}
},
'json'
);
return false;
});
The controller of the action page returns the pagination object:
$from_date = Input::get('from-date');
$to_date = Input::get('to-date');
$currentPage = Input::get('page-number', 1) - 1;
$perPage = Input::get('per-page');
$retrieved_data = array(); //array that will hold elements to be returned back
//code to get retrieved data and push to array $retrieved_data
$pagedData = array_slice($retrieved_data, $currentPage * $perPage, $perPage);
//$response = Paginator::make($pagedData, count($retrieved_data), $perPage); //this was ok but I want an "intelligent range of pages
$response = Paginator::slider($pagedData, count($retrieved_data), $perPage); //I was hoping that the returned first and last pages would be the "intelligent" range
return Response::json($response);
Is it possible to use Paginator::slider on arrays the same as Paginator::make?
Thanks