Таким образом, после некоторых проб и ошибок кажется, что по умолчанию Paginator просто использует любую модель, связанную с контроллером через соглашения об именах (модель «Пользователь» связана с контроллером «UsersController» и т. Д.),
Первый аргумент $this->paginate()
примет другую модель, если вы хотите использовать ее, например, $this->paginate('Dinglehopper')
, но указанная модель должна быть доступна для контроллера / действия, чтобы он работал,Для этого вам нужно $this->loadModel('Dinglehopper');
внутри действия, где вызывается $this->paginate('Dinglehopper')
.
Таким образом, в гипотетической ситуации, когда вы хотите использовать и разбивать на страницы модель «Dinglehopper» внутри вашего контроллера «Products», вы бы сделали,
// ProductsController.php
<?php
App::uses('AppController', 'Controller');
class ProductsController extends AppController {
public $helpers = array('Html', 'Form');
public $components = array('Session', 'Paginator');
public $paginate = array(
'limit' => 5
);
public function index() {
$this->loadModel('Dinglehopper');
$this->Product->recursive = -1;
$this->set('dinglehoppers', $this->paginate('Dinglehopper'));
}
}
?>
$this->loadModel('Dinglehopper');
делает модель «Dinglehopper»'доступно для действия, а затем $this->paginate('Dinglehopper')
возвращает разбитую на страницы модель Динглхоппера.