CakePHP 3.x User Management Premium Plugin Version 3.0.x
How to use ajax pagination in plugin and outside plugin
1. Set pagination variable in your controller e.g. in UsersController.phppublic $paginate = ['limit'=>25];
2. Now in any function you should get results from database in following way e.g. in index function$this->paginate = ['limit'=>10, 'order'=>['Users.id'=>'DESC']];
$users = $this->paginate($this->Users)->toArray();
$this->set(compact('users'));
if($this->request->is('ajax')) {
$this->layout = 'ajax';
$this->render('/Element/all_users');
}
3. Now in template ctp file code is conditional code for reducing the duplicate code. i.e. View code is divided in two parts one for ajax updation and other for normal request.
Just open the index file, location is yourapp/plugins/Usermgmt/src/Template/Users/index.ctp
This code will never execute on ajax calls because there is no need.
I have added element call in this file
<?php echo $this->element('Usermgmt.all_users'); ?>
4. Now find the element file all_users.ctp in yourapp/plugins/Usermgmt/src/Template/Element/
Now find the div with id "updateUsersIndex" The section inside this div will update on every ajax call.
Now in this file you should add paginator element in following way for e.g. in all_users.ctp before the results table<?php echo $this->element('Usermgmt.paginator', ['ajax'=>true, 'updateDivId'=>'updateUsersIndex']); ?>
where
'Usermgmt.paginator' is a paginator element location is yourapp/plugins/Usermgmt/src/Template/Element/paginator.ctp.
'ajax' is true/false, set true for ajax pagination and set false for normal pagination
'updateDivId' is reference id to tell the Jquery code that which section will be updated on ajax call.
Now in this file you should add pagination element in following way e.g. in all_users.ctp after the results table<?php if(!empty($users)) {
echo $this->element('Usermgmt.pagination', ['paginationText'=>__('Number of Users')]);
}?>
where
$users is result variable, set from controller's index function.
'Usermgmt.pagination' is a pagination element location is yourapp/plugins/Usermgmt/src/Template/Element/pagination.ctp.
'paginationText' is a pagination text to be displayed on pagination bar.
For more information see
Users Controller yourapp/plugins/Usermgmt/src/Controller/UsersController.php
Index View yourapp/plugins/Usermgmt/src/Template/Users/index.ctp
Index View yourapp/plugins/Usermgmt/src/Template/Element/all_users.ctp
Paginator Element yourapp/plugins/Usermgmt/src/Template/Element/paginator.ctp
Pagination Element yourapp/plugins/Usermgmt/src/Template/Element/pagination.ctp