If you have a the following code
class PartsController extends AppController
{
/**
* Index method
*
* @return \Cake\Network\Response|null
*/
public function index()
{
$this->paginate = [
'contain' => ['Sections']
];
$parts = $this->paginate($this->Parts);
$this->set(compact('parts'));
$this->set('_serialize', ['parts']);
}
and then you define a public $paginate value in the class as thus:
class PartsController extends AppController
{
public $paginate = [
'order' =>
[ 'Parts.sort_order' => 'asc'],
'limit' => 5
];
/**
* Index method
*
* @return \Cake\Network\Response|null
*/
public function index()
{
// this will overwrite your previously set $paginate options
$this->paginate = [
'contain' => ['Sections']
];
$parts = $this->paginate($this->Parts);
$this->set(compact('parts'));
$this->set('_serialize', ['parts']);
}
You will find that your 'order' and 'limit' options are ignored because the $paginate property is being over written in the function index() method. As a work around so you can still globally configure your paginator use the += operator as follows:
class PartsController extends AppController
{
public $paginate = [
'order' =>
[ 'Parts.sort_order' => 'asc'],
'limit' => 5
];
/**
* Index method
*
* @return \Cake\Network\Response|null
*/
public function index()
{
// using the += operator will add the options
// to the previously defined $paginate property
$this->paginate += [
'contain' => ['Sections']
];
$parts = $this->paginate($this->Parts);
$this->set(compact('parts'));
$this->set('_serialize', ['parts']);
}
then the options you set within the index() method will be added to the globally defined public $paginate = []

0 Comments