CakePHP 5.x User Management Premium Plugin Version 5.0.x
How to use ajax sorting 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']];
$paginated = $this->paginate($this->Users->find()->where($cond));
$users = $paginated->toArray();
$this->set(compact('paginated', 'users'));
if($this->getRequest()->is('ajax')) {
$this->viewBuilder()->setLayout('ajax');
$this->render('/Users/all_users');
}
3. Now in template file code is conditional code for reducing the duplicate code. i.e. template 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/templates/Users/index.php
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('../Users/all_users'); ?>
4. Now find the element file all_users.php in yourapp/plugins/Usermgmt/templates/Users
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 before the results table<?php echo $this->element('Usermgmt.paginator', ['useAjax'=>true, 'updateDivId'=>'updateUsersIndex']); ?>
where
'Usermgmt.paginator' is a paginator element location is yourapp/plugins/Usermgmt/templates/element/paginator.php.
'useAjax' is true/false, set true for ajax sorting and set false for normal sorting.
'updateDivId' is reference id to tell the Jquery code that which section will be updated on ajax call.
Now in Template file you should use table headers in following way
<th class="psorting"><?php echo $this->Paginator->sort('Users.first_name', __('Name')); ?></th>
Now this table column for Name becomes ajax sort-able.
where
'psorting' is a class which is required for ajax sorting
For more information see
Users Controller yourapp/plugins/Usermgmt/src/Controller/UsersController.php
Index View yourapp/plugins/Usermgmt/templates/Users/index.php
Index View yourapp/plugins/Usermgmt/templates/Users/all_users.php
Paginator Element yourapp/plugins/Usermgmt/templates/element/paginator.php