Если бы это был я, я побежал бы с твоей идеей сохранения материала в сессии. Затем я бы добавил измерение размера страницы в сеанс, чтобы хранить каждую страницу, позволяя пользователям с легкостью перемещаться туда и обратно.
$this->Session->write('Search.page.1.params',$params);
$this->Session->write('Search.page.2.params',$params2);
Чтобы сделать это способом Cake, вы, вероятно, захотите написать свой собственный помощник по разбиению на страницы или плагин. Что вы могли бы затем использовать более эффективно в своих контроллерах как
$this->MyPages->paginate('MyModel');
Полагаю, эта функция также даст вам возможность разрешить пользователям «Сохранить мой поиск», если они захотят, так как вы можете записать параметры сеанса в модель SavedSearch
или аналогичную.
Не забудьте $this->Session->destroy()
, прежде чем начинать новый поиск!