I 've a search filter in a view A, users can choose some values for the research. I want to display the results of the research, without reloading the page, at the bottom of the view in a table.
In a view A, I'va the search filter. In the same view, I'm doing this ajax call :
var tab = new Array();
function updateResult(){
$.ajax({
type:"POST",
url:"<?php echo Router::url(array('controller'=>'AController','action'=>'index'));?>",
data : {dataFVariables: $("select[name='filtreVariable\\[\\]']").map(function(){return $(this).val();}).get()},
dataType: 'json',
async:false,
success: function(tab){
..........
// Creating a table with the data in 'tab'
..........
},
error: function (tab) {
alert('error');
}
});
}
In the action 'index' of my controller, I retrieve a lot of data from the database. With this data, I create a table but the pagination doesn't work on this table.. Indeed, in my controller, I do :
.............
$this->paginate($query);
// the data send to the ajax call
echo json_encode($query);
The results are in the first page of my table but there is nothing in the others pages.
Thank you in advance !!
First Add in your controller :
$condition=array();
$this->paginate = array('conditions' => $condition, 'limit'=>'2');
$users = $this->paginate('YourModelName');
$this->set(compact('users'));
Then add this code in your corresponding ctp file :
<tr><td><?php echo $this->Paginator->prev('<< ' . __('previous', true), array(), null, array('class'=>'disabled'));?></td>
<td><?php echo $this->Paginator->numbers(array( 'class' => 'numbers' ));?></td>
<td><?php echo $this->Paginator->next(__('next', true) . ' >>', array(), null, array('class' => 'disabled'));?></td>
<td colspan="4"></td></tr>