CakePHP сохраняет параметры разбиения на страницы и вызывает их при следующем посещении

Я пытаюсь сохранить состояние запроса на пейджинг. Я хочу, чтобы пользователи, покидая страницу с включенным компонентом разбивки на страницы cakephp (для редактирования примера), по возвращении возвращались на последнюю страницу, посещенную с помощью компонента разбивки на страницы.

Таким образом, если пользователь посетил http://www.site.com/users/view/page:3, и они покидают страницу, они должны вернуться на ту же страницу. Я попробовал компонент отзыва страниц, который я получил в Интернете, но мне не удалось заставить его работать. Я использую CakePHP 2.0.


person mauzilla    schedule 26.04.2012    source источник
comment
Вы хотите сохранить его постоянно или только во время сеанса. То есть, когда они выходят из системы и снова входят в нее, хотите ли вы, чтобы они перешли на последнюю страницу с разбивкой на страницы?   -  person jeremyharris    schedule 26.04.2012
comment
Не постоянно, сеансы в порядке. Мне удалось сохранить сортировку с помощью сеанса и я могу успешно вспомнить это. Есть ли какой-либо способ настроить пагинатор, какую страницу отображать, то есть, другими словами, если в URL-адресе указана страница: 3, но я установил для свойства значение page => 4, чтобы он отображал страницу 4? Таким образом, я могу просто проверить, какой была последняя страница, сохранить ее как сеанс, а также вызвать ее при необходимости.   -  person mauzilla    schedule 26.04.2012
comment
Конечно, просто измените параметры объекта запроса.   -  person jeremyharris    schedule 26.04.2012
comment
Привет, Джереми, я пытался изменить значение, выполнив $this-›params[named][page] в своем контроллере, но я получаю косвенную модификацию перегруженного элемента CakeRequest, не имеет никакого эффекта.   -  person mauzilla    schedule 26.04.2012
comment
Измените объект запроса, например $this->request->params['named']['page'].   -  person jeremyharris    schedule 26.04.2012
comment
если хотите, отправьте его как ответ, и я утвержу ваш ответ как рабочий   -  person mauzilla    schedule 26.04.2012
comment
Круто, я отправил ответ. Рад, что это работает!   -  person jeremyharris    schedule 26.04.2012


Ответы (1)


Чтобы изменить то, что пагинатор использует в качестве параметров, вам нужно изменить объект CakeRequest в контроллере перед вызовом $this->Paginator->paginate().

Например, если пользователь перешел на /users/index/page:3, а вы хотите вместо этого отправить его на страницу 4, измените запрос в контроллере следующим образом:

$this->request->params['named']['page'] = 4;
person jeremyharris    schedule 26.04.2012