I'm using the CakePHP 3.0 to paginate some content, but I can't find a way to change the limit (user on browser choose the limit of content displayed on screen) using Paginator
built-in method (like sort built-in), to do this I use javascript to change limit in URL.
Qustion: Exist any way to do this in cakephp style ?
Controller action that uses paginate
public $helpers = [
'Paginator' => ['templates' => 'paginator-templates']
];
public function search()
{
if($this->request->is('get'))
{
$search = $this->request->query['search'];
@$limit = $this->request->query['limit'] ?: 3;
$this->paginate = [
'conditions' => ['product_name LIKE' => '%' . $search . '%'],
'limit' => $limit,
'contain' => ['Medias' => function($q){
return $q->select(['path', 'product_id'])
->where(['media_type_id' => 3]);
}]
];
$products = $this->paginate($this->Products);
}
}
Select with pagination limits:
<select name="products-view" class="form-control products-view inline-pagination-menu" id="products-view">
<option value="3">3</option>
<option value="6">6</option>
<option value="9">9</option>
</select>
Javascript responsible to change limit
in URL
$('#products-view').change(function(){
changeLimitPagination(this);
});
function changeLimitPagination(option){
location.search = $.query.set('limit', option.value).toString();
}