2013-11-28 4 views
0

Я новичок в CakePHP, моя версия 2.4.3Из страницы диапазона запросов

В документе я найти пример кода ниже

public function index() { 
    try { 
     $this->Paginator->paginate(); 
    } catch (NotFoundException $e) { 
     //Do something here like redirecting to first or last page. 
     //$this->request->params['paging'] will give you required info. 
    } 
} 

Мой вопрос:

1.Как перенаправить на последнюю страницу, есть ли способ получить общее количество страниц?

2.I попытался вывести $ this-> request-> params ['paging'] с помощью debug(), но ничего не было отображено, просто нулевое значение. Не сделал ли я что-то не так?

пожалуйста, помогите мне, считает

ответ

0

Данные paging не доступны это либо ошибка, либо документация неправильно - я бы сказал, что это первое, как это было бы своего рода излишним снова считать записи, когда компонент Paginator уже сделал это.

Глядя на ответственном код:

https://github.com/cakephp/cakephp/blob/2.4.3/lib/Cake/Controller/Component/PaginatorComponent.php#L215

показывает, что исключение, прежде чем ключ paging установлен в params массиве. Так, пока это не будет устранена вы должны либо изменить ядро, или рассчитывать и снова рассчитать самостоятельно, что-то вроде этого (возможно, потребуется перенастройка):

public function index() 
{ 
    try 
    { 
     $this->Paginator->paginate(); 
    } 
    catch(NotFoundException $e) 
    { 
     extract($this->Paginator->settings); 
     $count = $this->ModelName->find('count', compact('conditions')); 
     $pageCount = intval(ceil($count/$limit)); 
     $this->redirect(array('page' => $pageCount)); 
    } 
} 
+0

Получил! Большое спасибо!! – Daruma

1

На CakePHP 3.x, он работает меня. Надеюсь, вам помогли.

try { 
     $this->paginate(); 
    } 
catch (NotFoundException $e) { 
     $page = $this->request->params['?']['page'] - 1; 
     return $this->redirect(['action' => 'index', 'page' => $page]); 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^