Даже если в большинстве случаев правильным решением будет перепроектировать ваш пользовательский интерфейс, чтобы удалить необходимость двойной нумерацией страниц, следующий рабочий раствор:
Во-первых, в контроллере перекрытии постраничной торта() функция ищет ключ Paginator:
/**
* Handles automatic pagination of model records.
*
* @param mixed $object Model to paginate (e.g: model instance, or 'Model', or 'Model.InnerModel')
* @param mixed $scope Conditions to use while paginating
* @param array $whitelist List of allowed options for paging
* @return array Model query results
* @access public
* @link http://book.cakephp.org/view/165/Controller-Setup
*/
function paginate($object = null, $scope = array(), $whitelist = array(), $key = null) {
$results = parent::paginate($object, $scope, $whitelist);
if ($key) {
$this->params['paging'][$key] = $this->params['paging'][$object];
unset($this->params['paging'][$object]);
}
return $results;
}
Тогда
/**
* undocumented function
*
* @param string $key
* @return void
* @access public
*/
function _pageForPagination($by) {
$page = 1;
$samekey = isset($this->params['named']['by']) && $this->params['named']['by'] == $by;
$pageInUrl = isset($this->params['named']['page']);
if ($samekey && $pageInUrl) {
$page = $this->params['named']['page'];
}
$this->passedArgs['page'] = $page;
return $page;
}
/**
* FIXME: Wrapper for Cake's pagination
* Change pagination criteria on the fly (conditions, grouping, order, limit)
*
* @param string $model
* @param string $criteria
* @return void
* @author Andrew
*/
function _paginateBy($key) {
$this->User->unbindModel(array('hasMany' => array('UserImage')), false);
$this->paginate['User'] = am($this->User->getCriteria($key), array('page' => $this->_pageForPagination($key)));
return $this->paginate('User', array(), array(), $key);
}
Затем использовать его как и в контроллере: $ this-> s et ('byJoinDate', $ this -> _ paginateBy ('random'));
В модели: echo $ paginator-> prev ('prev', array ('model' => $ by, 'class' => 'back'), null, array ('model' => $ by, 'class' => 'disabled back'));
Пожалуйста, прочтите мой ответ на аналогичный вопрос: http: // stackoverflow.com/a/21211278/2486198 – Mitja